방금 자바에서 '정적 과도'필드를 선언 할 수 있음을 알았습니다. 컴파일러는 불평하지 않습니다. 우리 모두 알고 있듯이 정적 필드가 직렬화되지 않기 때문에 어떤 방식으로도 유용하지는 않습니다.Java : 정적 과도 필드
하지만 실제로 '정적 과도'필드가 유용한 경우가 있습니까?
방금 자바에서 '정적 과도'필드를 선언 할 수 있음을 알았습니다. 컴파일러는 불평하지 않습니다. 우리 모두 알고 있듯이 정적 필드가 직렬화되지 않기 때문에 어떤 방식으로도 유용하지는 않습니다.Java : 정적 과도 필드
하지만 실제로 '정적 과도'필드가 유용한 경우가 있습니까?
아니요 - 직접 말하면 정적 필드는 직렬화되지 않습니다.
이상하게도 컴파일러가 그렇게 할 수 있습니다.
내장 된 Java serializer로 직렬화되지 않습니다. 그러나 다른 serializer는 다르게 동작 할 수 있습니다. –
그리고 다른 serializer를 사용하더라도 정적 필드를 저장하는 것이 ...? –
@ 피터, 그런데 serialVersionUID는 예외입니다. –
대부분의 경우 유용하지 않습니다. 정적 필드는 실제로 기본 직렬 변환기에 의해 직렬화되지 않습니다.
그러나 static
transient
필드는 반사를 통해 감지 될 수 있습니다. 누군가가 자신의 serializer를 작성하고 정적 필드를 serialize하려는 경우 일 수도 있고 키워드를 사용하여 transient
키워드를 가져 와서 특정 필드의 직렬화를 건너 뛸 수 있습니다.
추신 :이 답변은 완전을 기하기 위해 게시되었으며 Peter Lawrey's comment을 기반으로합니다. 그에게 크레딧.
정적 일시적인 필드를 반사를 통해 감지 할 수 있습니다. XML, JSon 등을 수행하기 위해 독자적인 시리얼 라이저를 작성할 수 있으며, 정적 변수도 저장하려는 경우 특별한 의미를 부여 할 수 있습니다. –
+1은 유스 케이스를 얻습니다. 내 이해는 그것이 중복되었다. – Nishant
BTW : 추상 클래스의 public 생성자 또는 최종 클래스의 보호 된 생성자/메서드와 같이별로 의미가없는 다른 수정 자 조합을 사용할 수 있습니다. –