Java
mutable 과 immutable
dev-jo
2021. 7. 9. 02:37
오늘 String과 StringBuilder의 속도 차이에 대해 검색을 하다
mutable , immutable의 대해 알게 되었다.
아래 링크의 정보를 참고하면 좋다.
https://zetawiki.com/wiki/%EC%9D%B4%EB%AE%A4%ED%84%B0%EB%B8%94,_%EB%AE%A4%ED%84%B0%EB%B8%94
이뮤터블, 뮤터블 - 제타위키
다음 문자열 포함...
zetawiki.com
MutableClass
생성된 후 값의 내용을 변경할 수 있는 클래스다.
ex ) String을 제외한 참조 타입 변수들
ImmutableClass
인스턴스가 생성된 후에는 값을 변경할 수 없는 클래스
ex) String 등등
Example
Mutable 클래스의 예시 코드다
public class MutableClassExample {
private String name;
public MutableClassExample(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Setter로 값을 변경할 수 있다.
Immutable 클래스의 예시 코드다
(VO 도 Immutable 가 될 수 있다 Setter 가 없기 때문 )
public class ImmutableClassExample {
private String name;
public ImmutableClassExample(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
한번 생성자로 인스턴스를 생성한 후 값을 변경할 수단이 존재하지 않는다.
마지막으로 두 클래스의 값을 변경하거나 변경하지 못하는 예시이다
public class ExampleTest {
public static void main(String[] args) {
// Mutable
MutableClassExample mutableClassExample = new MutableClassExample("홍길동"); //인스턴스 생성
mutableClassExample.setName("김철수"); // 변경이 가능하다.
ImmutableClassExample immutableClassExample = new ImmutableClassExample("김영희"); //인스턴스 생성
//변경이 불가능하다.
}
}
결론
mutable는 변경 가능 클래스
immutable는 변경이 불가능한 클래스이다.