Ultimamente ho iniziato ad aggiungere questo ad alcune classi in un'API interna:
public class MyClass {
// I usually do this with classes I expect to
// be printed out or tested a lot (particularly
// in the early stages of creating the class/package).
//
// Having one field is not a criteria for doing this,
// just a simple example. And of course there is always
// a default value for the toString field.
private Object oneOtherFieldExample;
private Function<MyClass, String> toString =
myClass -> String.valueOf(oneOtherFieldExample);
...
public void setToString(Function<MyClass,String> toStringFunction) {
toString = toStringFunction;
}
public String toString() {
return toString.apply(this);
}
Questo è diventato utile un paio di volte, ma visto che sto lavorando su una API interna mi chiedo
- Prevedete tutti i potenziali problemi che mi mancano?
- È ragionevolmente leggibile e intuitivo?
- Questo o qualcosa di simile esiste già come una sorta di modello (e in tal caso, come si chiama)?
- Poiché questo è particolarmente usato per test e creazione precoce, dovrei aggiungere un modo statico per impostare la variabile toString predefinita per evitare di doverla impostare manualmente ogni volta che istanzia un nuovo oggetto MyClass (nel caso in cui vengono create migliaia di oggetti )?