제 질문을 고려해주십시오. 최종 값은 java에서 변경할 수 없습니다.최종 수정자가 목록에 지정된 상태에서 Java 라인 아래에있는 것은 무엇입니까?
private final List<Integer> list = new ArrayList<Integer>();
위의 목록 인스턴스화는 최종입니다. 이제 모든 요소를 추가 할 수 있습니다. 그 후 나는 list = null을 할당 할 수 있습니까?
도와주세요.
감사합니다.
제 질문을 고려해주십시오. 최종 값은 java에서 변경할 수 없습니다.최종 수정자가 목록에 지정된 상태에서 Java 라인 아래에있는 것은 무엇입니까?
private final List<Integer> list = new ArrayList<Integer>();
위의 목록 인스턴스화는 최종입니다. 이제 모든 요소를 추가 할 수 있습니다. 그 후 나는 list = null을 할당 할 수 있습니까?
도와주세요.
감사합니다.
즉, 변수 list
이 최종입니다.
다시 말해서 다른 것을 할당 할 수 없다는 의미입니다. 다음과 같이에 값 (참조)를 할당 완료되면
:
private final List<Integer> list = new ArrayList<Integer>();
당신은 다음과 같이 다시 뭔가 할 수 없습니다 :이 코드가 유효
list = new ArrayList<Integer>(); //this is invalid because you are trying to assign something else the variable list
list.add(new Integer(123));
입니다?
그것은 완벽하게 유효합니다. 변수 list
이 참조하는 객체를 ArrayList
에 추가하는 것입니다.
final
키워드를 사용하면 참조하는 개체가 아닌 list
변수가 제한됩니다.
자바의 new
키워드는 새 개체를 만들고 해당 참조를 반환합니다. 따라서 코드에서 list
변수는 새 목록에 대한 참조를 저장합니다. 최종 선언은 list
에 저장된 참조가 최종이며 변경 될 수 없음을 의미합니다.
실제 목록은 여전히 수정할 수 있습니다.
final
키워드는 변수가 한 번만 초기화 할 수 있음을 나타냅니다. 이 아닌은 해당 변수에 할당 된 객체의 불변성을 보장합니다. 즉,이 내용을 지시 대상의에 대한 변수가 참조 할 수있는에 대해 뭔가,하지만 아무것도 말한다.
하고있는 경우이 :이 허용되지 않습니다
list.add(3);
:
private final List<Integer> list = new ArrayList<Integer>();
이 가능합니다
list = new ArrayList<Integer>();
[때해야 하나 개 사용
가능한 중복 최종?] (http://stackoverflow.com/questions/154314/when-should-one-use-final) –
더 많은이 http : // stacko의 중복 verflow.com/questions/4525642/java-final-arraylist 그러면 @BeauGrantham을 게시 한 링크. – Perception