2017-03-08 7 views
2

필요는 javax.inject.Inject로 주석 필드의 NULL 체크는 내가 <code>javax.inject.Inject</code> 주석을 사용하여 필드를 주입 ​​한 클래스가

import javax.inject.Inject; 

public class Foo extends BaseFoo { 
    @Inject 
    private Bar bar; 
    ... 

    public void execute(){ 
    if (bar == null) { 
     //log failure message and return 
     return; 
    } 
    //Do your work.. 
    } 
    ... 
} 

내 질문입니다 위의 예에서인지 null 확인 필요하거나 아니? 그리고 왜?

+0

잘 모르겠습니다. 최종 필드에 주사 가능한 생성자를 사용합니다. – Michael

+0

수락을 보내 주셔서 감사합니다. 다른 정보를 추가하는 것과 같이 내 대답을 당신의 눈에서 볼 가치가 있도록 할 수있는 일이 있다면 알려주십시오 ... – GhostCat

답변

0

답변은 다음과 같습니다. 당신은 사출 과정 를 주입하지 않습니다 유효한 시나리오가 생각 경우

는, 당신은 그 수표를해야합니까. 그런 일이 일어나지 않아야한다고 생각한다면, 아마도 런타임에 NPE로 끝날 것입니다. 그리고 다시. 그 행동이 당신의 맥락에서 "적절하다"면 (그리고 그때 어떻게/어떻게 대처할 것인가) 자신을 생각해야합니다.

그러나 나는 그 필드를 최종적으로 만들고 생성자에 주석을 넣으려고 노력합니다. 들어오는 인수를 확인하고 Objects.requireNonNull()을 입력하면됩니다. 그리고 Foo 객체가 null이 null인지 나중에 확인합니다.