Per favore, si dia la differenza tra oggetti mutevoli e oggetti immutabili con l'esempio.Differenza tra oggetti mobili e oggetti immutabili
risposta
Gli oggetti mutabili possono avere i loro campi modificati dopo la costruzione. Gli oggetti immutabili non possono.
public class MutableClass {
private int value;
public MutableClass(int aValue) {
value = aValue;
}
public void setValue(int aValue) {
value = aValue;
}
public getValue() {
return value;
}
}
public class ImmutableClass {
private final int value;
// changed the constructor to say Immutable instead of mutable
public ImmutableClass (final int aValue) {
//The value is set. Now, and forever.
value = aValue;
}
public final getValue() {
return value;
}
}
+1 come hai risposto prima di @Ralph e più esplicitamente – KNU
Immutable Lo stato dell'oggetto non può essere modificato.
ad esempio String
.
String str= "abc";//a object of string is created
str = str + "def";// a new object of string is created and assigned to str
Gli oggetti mutabili hanno campi che possono essere modificati, gli oggetti immutabili non hanno campi che possono essere modificati dopo la creazione dell'oggetto.
Un oggetto immutabile molto semplice è un oggetto senza campo. (Ad esempio una semplice implementazione di Comparator).
class Mutable{
private int value;
public Mutable(int value) {
this.value = value;
}
//getter and setter for value
}
class Immutable {
private final int value;
public Immutable(int value) {
this.value = value;
}
//only getter
}
Non sono diversi dal punto di vista di JVM. Gli oggetti immutabili non hanno metodi che possono modificare le variabili di istanza. E le variabili di istanza sono private; quindi non puoi cambiarlo dopo averlo creato. Un esempio famoso sarebbe String. Non hai metodi come setString o setCharAt. E s1 = s1 + "w" creerà una nuova stringa, con quella originale abbandonata. Questa è la mia comprensione.
Gli oggetti immutabili sono semplicemente oggetti il cui stato (i dati dell'oggetto) non può essere modificato dopo la costruzione. Esempi di oggetti immutabili da JDK includono String e Integer.
Ad esempio: (Point è mutevole e stringa immutabile)
Point myPoint = new Point(0, 0);
System.out.println(myPoint);
myPoint.setLocation(1.0, 0.0);
System.out.println(myPoint);
String myString = new String("old String");
System.out.println(myString);
myString.replaceAll("old", "new");
System.out.println(myString);
Il risultato è:
java.awt.Point[0.0, 0.0]
java.awt.Point[1.0, 0.0]
old String
old String
Good 'ol Effective Java. – maffo
Questo è quello che sto cercando ... THanks – HybrisFreelance
myString.replaceAll ("vecchio", "nuovo"); - Questo codice deve essere come myString = myString.replaceAll ("vecchio", "nuovo"); - Penso che tu l'abbia usato nel modo sbagliato. – Tugrul
- 1. Oggetti serializzabili e immutabili
- 2. Oggetti immutabili e chiavi hashmap
- 3. oggetti immutabili .net
- 4. Oggetti immutabili in PHP?
- 5. Cosa sono gli oggetti immutabili?
- 6. oggetti immutabili con inizializzatori oggetto
- 7. jvisualvm differenza tra oggetti live e oggetti assegnati
- 8. Instantiating di oggetti accoppiabili immutabili
- 9. Gli oggetti jQuery sono immutabili?
- 10. Come rendere le collezioni immutabili di Scala detenere oggetti immutabili
- 11. Scala "Aggiorna" immutabili oggetti migliori pratiche
- 12. Pubblicazione sicura di oggetti immutabili in Java
- 13. Perché gli oggetti immutabili sono thread-safe?
- 14. Oggetti immutabili in Java e accesso ai dati
- 15. Groovy- Differenza tra elenco, lista array e array di oggetti
- 16. Differenza tra programmazione orientata agli oggetti e programmazione reattiva
- 17. Qual è la differenza tra classi e istanze di oggetti?
- 18. Qual è la differenza tra oggetti e classi in C#?
- 19. differenza tra il cursore e gli oggetti di connessione
- 20. Impossibile utilizzare oggetti mobili con Boost.Asio
- 21. Oggetti falsi contro oggetti finti
- 22. oggetti mutabili e hashCode
- 23. Qual è l'approccio migliore per convertire oggetti immutabili in oggetti mutabili (ricorsivi)?
- 24. Come faccio a manipolare un albero di oggetti immutabili?
- 25. Perché gli oggetti in Redux dovrebbero essere immutabili?
- 26. tipi immutabili con la sintassi di inizializzazione degli oggetti
- 27. Un modo carino per fare riferimento a due oggetti immutabili?
- 28. Perché gli oggetti immutabili sono amati dal GC di JVM?
- 29. Come ottenere la differenza di ore tra due oggetti data?
- 30. come calcolare una differenza tra due oggetti Zend_Date, in mesi
'classe STRING' è un esempio di un oggetto immutabile. – Qwerky
Vedi anche [Oggetti mutabili vs immutabili] (http://stackoverflow.com/questions/214714/mutable-vs-immutable-objects) (non specifici di Java) –
btw, dai un'occhiata a ['com.jcabi.aspects .Immutable'] (http://www.jcabi.com/jcabi-aspects/annotation-immutable.html) annotazione – yegor256