Informazioni sugli oggetti anonimi

2

In Java, in particolare nello sviluppo di Android, c'è qualche differenza tra dichiarare un oggetto come

SomeObject object = new SomeObject();
someField.setObject(object);

rispetto ad un oggetto anonimo (non sono sicuro che sia quello che viene chiamato)

someField.setObject(new SomeObject());

prestazioni? O miglioramenti nella memoria. Grazie.

    
posta userIsAMonkey 10.10.2012 - 09:21
fonte

1 risposta

8

Il codice new SomeObject() che scrivi è identico e creerà un codice byte identico in entrambi i casi, quindi no, non c'è differenza rispetto alla creazione dell'oggetto.

I tuoi esempi differiscono solo per ciò che fai con l'oggetto: assegnandolo a una variabile locale o passandolo come argomento a una funzione (che può quindi assegnarlo a una variabile locale oa un campo). L'unica differenza nelle prestazioni può venire da questa distinzione; per esempio. un oggetto archiviato solo in una variabile locale può ottenere il garbage-collected una volta che l'endpoint termina, mentre un oggetto passato al di fuori dell'ambito corrente potrebbe vivere più a lungo, forse molto più a lungo. Ma questo non ha nulla a che fare con la creazione di oggetti; è ugualmente vero per vecchi e nuovi oggetti nel tuo programma. Pertanto, se utilizzare le variabili temporanee o le invocazioni nidificate nel codice è in gran parte una questione di leggibilità (che dovrebbe essere comunque più importante dell'ottimizzazione, anche se era una differenza)).

    
risposta data 10.10.2012 - 09:29
fonte

Leggi altre domande sui tag