익명 내부 클래스를 메서드 내에서 사용할 때 익명 내부 클래스 내부에서 메서드 매개 변수를 사용하려면이를 final로 표시해야합니다. 여기에 세부 정보가 나와 있습니다. Why do we use final keyword with anonymous inner classes?다른 인스턴스 속성을 사용하는 인스턴스 속성에 대한 익명 innerclass 선언
하지만 클래스 속성과 메소드 로컬 속성을 사용하면 어떻게됩니까?
간단한 유스 케이스 : 구아바 기능을 가진 봄 서비스 :
protected LovValueDAO lovValueDAO;
private final Function<String,LovValue> LOV_ID_TO_LOV = new Function<String,LovValue>() {
@Override
public LovValue apply(String input) {
return lovValueDAO.findById(input);
}
};
@Required
public void setLovValueDAO(LovValueDAO lovValueDAO) {
this.lovValueDAO = lovValueDAO;
}
는 그런 구아바 함수를 선언하는 안전한가요? 내 테스트에 따르면 잘 작동하지만 후드에서는 어떻게됩니까?
초기화 순서는 다음
- 기능 초기화 lovValueDAO는
따라서 기능이 먼저 초기화 즉 같이 내가 추측 세터 통해 스프링 주입
맞습니까?
그리고 내가이 코드를 사용하는 경우 어떤 일이 : 난 함수를 호출 한 후
private final Function<String,LovValue> LOV_ID_TO_LOV = new Function<String,LovValue>() {
@Override
public LovValue apply(String input) {
return lovValueDAO = null;
}
};
가 내 외부 속성이 null로 설정 protected LovValueDAO lovValueDAO;
것인가를? 선언하는 클래스 필드에 대한 액세스는 정상적인 필드로 처리되도록