상수 객체에 대한 참조는 어떻게 만듭니 까?
final Myclass obj = new Myclass();
작동하지 않습니다. obj (참조)를 다시 할당해서는 안되지만 참조 된 객체는 여전히 변경할 수 있습니다.
구성된 개체 자체가 변경되지 않도록하고 싶습니다.
- 답변 # 1
- 답변 # 2
최종과 불변의 두 가지를 혼합하고 있습니다.
변수는최종일 수 있으므로 초기화 된 후에는 값 (또는 객체 참조)을 변경할 수 없습니다 (물론 참조의 객체 속성을 변경할 수는 있습니다)
개체는불변(키워드가 아니라 속성) 일 수 있으므로 생성 된 후에는값으로 변경할 수 없습니다. 문자열은 좋은 예입니다. String 객체 내에서 백업 문자 []를 변경할 수 없습니다.
- 답변 # 3
원하는 것은 불변 객체입니다. Java에는 객체를 즉시 변경할 수없는 키워드가 없습니다. 상태를 변경할 수 없도록 객체의 논리를 설계해야합니다. BalusC가 말했듯이 뮤 테이터에 대한 액세스를 제한하는 다른 객체로 래핑 할 수 있습니다.
- 답변 # 4
Java에서이를 가능하게하는 키워드가 없다고 생각합니다. 참조가 상수/최종 임에도 불구하고 객체의 내부는 여전히 변경 될 수 있습니다.
가장 좋은 옵션은 클래스의 ReadOnly 구현 버전을 사용하는 것입니다.
자세한 내용은 여기를 참조하십시오 : http://en.wikipedia.org/wiki/Const-correctness#final_in_Java
- 답변 # 5
Java에서 불변 클래스는 일반적으로 변경되지 않는 것을 의미합니다 "setters"가 있고 "getter"로 액세스 할 수있는 모든 필드도 변경할 수 없습니다. 데이터를 클래스로 가져 오려면 값을 인수로 사용하는 생성자가 있어야합니다.
공개 클래스 MyClass { 무언가를 끈다; 다른 것; // 생성자 만 클래스를 수정할 수 있습니다 공개 MyClass (String something, int somethingElse) { this.something = 무엇인가; this.somethingElse = somethingElse; } // "무언가"에 액세스합니다. 문자열이며 변경할 수 없습니다. 공개 문자열 getSomething () { 무언가를 반환; } // "somethingElse"에 액세스하십시오. int이며 불변입니다. 공개 int getSomethingElse () { 다른 것을 반환; } }
관련 자료
- javascript - 개체에 개체 만들기
- c# - 'AppDbContext'유형의 개체를 만들 수 없습니다
- JavaScript - 자바 스크립트 - 개체에서 테이블을 만드는 방법은 무엇입니까?
- Javascript에서 특수 배열 문자열로 객체를 만들 수 있습니까?
- c# - 단순 유형을 포함하는 임시 객체를 만드는 방법
- javascript - 문자열 배열에서 객체 배열 생성
- java - JVM이 해당 클래스의 이름이있는 경우 해당 클래스에서 주 메서드에 액세스하기 위해 주 메서드를 포함하는 클래스의 개체를 만들 수없는 이유는 무엇입니까?
- VBA Word normaldotm에서 클래스 모듈 개체 만들기
- javascript - 동일한 객체로 배열 값에 새 배열을 어떻게 만들 수 있습니까?
- p5.js - Javascript에서 변경되지 않고 일정하게 유지되는 난수를 어떻게 생성합니까?
- javascript - 시간, 분, 날짜, 월 및 연도로 구성된 문자열에서 날짜 개체를 만드는 방법은 무엇입니까?
- javascript - 배열에서 객체를 추출하여 다른 배열 만들기
- jquery - 차트를 만드는 개체의 데이터 집합
- Zoom에서 제공하는 UCT 날짜 및 시간대에서 Java로 Date 객체를 만들어야합니다 서버의 시간대는 요소가 아니어야합니다
- python - AttributeError"SQLAlchemy"개체에 'create'속성이 없습니다
- groovy - 객체를 재귀적이고 쉽게 생성
- reactjs - 자바 스크립트 객체 내부에 동적으로 객체 생성
- python - 별도의 시간별 datetime 열이 지정된 시간 범위 사이에있는 경우 새 개체 열 값을 만듭니다
- class - __add__ 메서드를 올바르게 덮어 쓰고 Python에서 새 개체를 만드는 방법은 무엇입니까?
- 기존 개체 목록에서 새 개체 목록을 만드는 방법은 무엇입니까?
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- JavaScript 변수를 HTML div에 '출력'하는 방법
- python - 문자열에서 특정 문자 제거
String
와 같이 불변으로 만듭니다. 입니다). 또는 다른 객체로 감싸서 해당 객체의 뮤 테이터에 대한 액세스를 제한하십시오 (예 :Collections.unmodifiableList()
). 그리고 consorts do).