Viele Klassen im Paket javax.sql verwenden den Konstruktor new String(str)
. Zum Beispiel:Warum verwenden Klassen im Paket javax.sql new String (str)?
public void setCatalogName(int columnIndex, String catalogName) throws SQLException {
checkColRange(columnIndex);
if (catalogName != null)
colInfo[columnIndex].catName = new String(catalogName);
else
colInfo[columnIndex].catName = new String("");
}
Oder
public void setUsername(String name) {
if(name == null)
{
username = null;
} else {
username = new String(name);
}
}
Und vieles mehr:
javax.sql.rowset.serial.SerialStruct.SerialStruct (SQLData, Karte>) javax.sql. rowset.serial.SerialStruct.SerialStruct (Struktur, Map>) javax.sql.rowset.RowSetMetaDataImpl.setCatalogName (int, Zeichenfolge) javax.sql.rowset.RowSetMetaDataImpl.setColumnLabel (int, String) javax.sql.rowset.RowSetMetaDataImpl.setColumnName (int, String) javax.sql.rowset.RowSetMetaDataImpl.setColumnTypeName (int, String) javax.sql.rowset.BaseRowSet.setCommand (String) javax.sql.rowset. BaseRowSet.setDataSourceName (String) java.text.DateFormatSymbols.setLocalPatternChars (String) javax.sql.rowset.BaseRowSet.setNull (int, int, String)
Was ist der Zweck davon? Werden nicht unnötige String-Instanzen auf dem Heap erstellt?
Nach welcher JDK-Implementierung? OpenJDK? – oldrinb
JDK6, Oracle .... Ich habe gerade JDK7 überprüft, und es ist dort behoben – Bozho
In der Tat, ich sehe keine davon in [OpenJDK 7] (http://grepcode.com/file_/repository.grepcode.com /java/root/jdk/openjdk/7-b147/javax/sql/rowset/RowSetMetaDataImpl.java). – oldrinb