변경 가능한 개체와 변경할 수없는 개체 사이의 차이점을 알려주십시오.가변 개체와 변경 불가능 개체의 차이점
답변
변경 가능한 개체는 구성 후에 필드를 변경할 수 있습니다. 변경 불가능한 객체는 변경할 수 없습니다.
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;
}
}
@Ralph 이전에 대답 한대로 +1로 명시 적으로 – KNU
Immutable 개체의 상태를 변경할 수 없습니다. 예 : String
String str= "abc";//a object of string is created
str = str + "def";// a new object of string is created and assigned to str
변경 가능 개체는 변경할 수 있으며 변경 불가능 개체는 개체 생성 후 변경할 수있는 필드가 없습니다.
매우 간단한 불변 개체는 필드가없는 개체입니다. (예를 들어 간단한 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
}
이들은 JVM의 관점과 다르지 않습니다. 변경할 수없는 객체에는 인스턴스 변수를 변경할 수있는 메소드가 없습니다. 그리고 인스턴스 변수는 private입니다. 그러므로 그것을 만든 후에는 변경할 수 없습니다. 유명한 예가 String입니다. 당신은 setString이나 setCharAt와 같은 메소드를 가지고 있지 않다. 그리고 s1 = s1 + "w"는 원래 문자열을 버린 새 문자열을 만듭니다. 그건 내 이해입니다.
변경 불가능한 개체는 상태 (개체의 데이터)가 구성 후 변경할 수없는 개체입니다. JDK의 불변 객체의 예로는 String과 Integer가있다. 예를 들어
(포인트 가변 문자열 불변)
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);
출력은 :
java.awt.Point[0.0, 0.0]
java.awt.Point[1.0, 0.0]
old String
old String
좋은 'ol 효과적인 자바. – maffo
이것은 내가 찾고있는 것입니다 ... 감사합니다. – HybrisFreelance
myString.replaceAll ("old", "new"); 이 코드는 다음과 같아야합니다. myString = myString.replaceAll ("old", "new"); - 네가 잘못 사용한 것 같아. – Tugrul
- 1. 개체와 정적 메서드의 차이점
- 2. 이벤트 개체와 조건 변수의 차이점
- 3. 저장소 및 변경 불가능 개체?
- 4. 비즈니스 로직 오브젝트와 변경 가능하고 변경 불가능
- 5. 캐시 디자인 : 변경 불가능한 키를 기반으로하는 가변 엔터티 개체의 플라이급
- 6. Windows에서 커널 개체와 이벤트 개체의 차이점은 무엇입니까?
- 7. 커널 개체와 C# 개체의 차이점은 무엇입니까?
- 8. PHP DOMElement는 변경 불가능합니다. = '수정 불가능 오류'
- 9. C++에서 개체와 개체의 포인터는 무엇이 다릅니 까?
- 10. 변경 가능 vs 병렬 응용 프로그램에 대해 변경 불가능
- 11. 정렬 개체와 다형성
- 12. Python : 가변 내용의 자동 변경
- 13. 전역 개체와 창 개체의 속성을 설정하는 것과 다른 점은 무엇입니까?
- 14. 복합 개체에서 부모 개체와 자식 개체의 공통점이 거의 동일합니까?
- 15. 사용자 개체의 부울 값 변경
- 16. C# : 목록 개체의 변경 불가능한보기?
- 17. 중첩 된 인터페이스 대체 (C#에서는 불가능)
- 18. 비 병렬 응용 프로그램에서 변경 불가능 성이 유용합니까?
- 19. MySQL : AVG AVG 불가능?
- 20. 재진입 불가능 타이머
- 21. NSMutable 배열 : 가변 범위 변경 후 상태
- 22. AVI 압축 - CBR 구성 불가능
- 23. .NET 개체의 속성 값 변경 감지?
- 24. 기존 개체의 Google 저장 acl 변경
- 25. AS3 - 해당 개체 내에서 개체의 깊이를 변경
- 26. 비즈니스 개체의 변경 내용을 추적하는 방법은 무엇입니까?
- 27. POCO 개체의 수정으로 기록되는 필드 변경 중지
- 28. EF4 코드 만 개체의 TPH 변경 유형
- 29. 고정 된 개체의 표시 여부 변경?
- 30. C++ 소멸자 엉망, 디버그 불가능
'String' 클래스는 불변 오브젝트의 좋은 예이다. – Qwerky
도 참조하십시오. [변경 가능 개체와 불변 개체] (http://stackoverflow.com/questions/214714/mutable-vs-immutable-objects) –
btw, [com.jcabi.aspects .Immutable'] (http://www.jcabi.com/jcabi-aspects/annotation-immutable.html) annotation – yegor256