avevo bisogno di usare this method, e dopo aver guardato il codice sorgente, ho notato un inizializzazione StringBuilder
che non è familiare a me (io uso sempre il costruttore senza argomenti da StringBuilder
, vale a dire new StringBuilder()
).StringBuilder inizializzazione in Java
Nel metodo:
StringBuilder sb = new StringBuilder(items.size() << 3);
Dal JavaDoc:
java.lang.StringBuilder.StringBuilder (int capacity)
Costruisce un costruttore di stringa con nessun carattere in esso e una capacità iniziale specificata dall'argomento capacità.
Perché è necessario un po 'di spostamento qui?
Codice sorgente:
/** Creates a backslash escaped string, joining all the items. */
public static String join(List<?> items, char separator) {
StringBuilder sb = new StringBuilder(items.size() << 3);
boolean first=true;
for (Object o : items) {
String item = o.toString();
if (first) {
first = false;
} else {
sb.append(separator);
}
for (int i=0; i<item.length(); i++) {
char ch = item.charAt(i);
if (ch=='\\' || ch == separator) {
sb.append('\\');
}
sb.append(ch);
}
}
return sb.toString();
}
"non dovresti preoccuparti dei dettagli di implementazione di una classe che stai utilizzando" Davvero? è uno scherzo? – JohnJohnGa
SOLID; incapsulamento. Se scrivi il tuo codice su una conoscenza specifica del funzionamento interno di una classe X, c'è un'alta probabilità che il tuo codice non funzioni correttamente dopo che la classe X è stata modificata. –
esaminare i dettagli di implementazione di una libreria ben nota può anche aiutarti a migliorare le tue capacità di codifica – JohnJohnGa