이것은 JDK의 HashMap 클래스에 대한 keySet() 메소드입니다. 저자가 필드 (keySet)를 지역 변수 ks에 할당 한 이유는 무엇입니까?로컬 변수에 인스턴스 필드를 할당
public Set<K> keySet() {
Set<K> ks;
return (ks = keySet) == null ? (keySet = new KeySet()) : ks;
}
위와 아래의 차이점은 무엇입니까? 스레드 보안과 관련이 있습니까?
transient volatile Set<K> keySet;
는 지역 변수 할당을 사용하여 단 한 번 읽고, 휘발성이기 때문에이 : 당신이 abstract class AbstractMap<K,V>
의 keySet
선언을 보면 같은
public Set<K> keySet() {
return (keySet == null ? (keySet = new KeySet()) : keySet;
}
아마; 변수가 null이 아니고 해당 값을 반환하는지 확인하면서 클래스 수준 변수를 설정하려고 시도하는 것처럼 보입니다. 나는 그걸 넘어선 단서가 없다. 전체 수업을 봐야 겠어. –
아마도 의도의 명확성을 위해 – alphablue
http://stackoverflow.com/q/28975415/3182664 http://stackoverflow.com/q/2785964/3182664 http://stackoverflow.com/q/의 중복으로 간주 될 수 있습니다. 37776179/3182664 http://stackoverflow.com/q/32619269/3182664 및 가능성이 다른 일부 .... – Marco13