Molte classi nel pacchetto javax.sql utilizzano il costruttore new String(str)
. Per esempio:Perché le classi nel pacchetto javax.sql utilizzano la nuova stringa (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("");
}
O
public void setUsername(String name) {
if(name == null)
{
username = null;
} else {
username = new String(name);
}
}
E molti di più:
javax.sql.rowset.serial.SerialStruct.SerialStruct (SQLData, mappa>) javax.sql. rowset.serial.SerialStruct.SerialStruct (Struct, Map>) javax.sql.rowset.RowSetMetaDataImpl.setCatalogName (int, String) 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)
Qual è lo scopo di tutto questo? Non sta creando istanze di stringa non necessarie sull'heap?
In base a quale implementazione JDK? OpenJDK? – oldrinb
JDK6, Oracle .... Ho appena controllato JDK7, ed è stato risolto lì – Bozho
In effetti, non vedo nulla di tutto ciò in [OpenJDK 7] (http://grepcode.com/file_/repository.grepcode.com /java/root/jdk/openjdk/7-b147/javax/sql/rowset/RowSetMetaDataImpl.java). – oldrinb