0

A 및 B와 하나의 주류 클래스라고하는 두 개의 조각 클래스가 있습니다. 일부 자습서를보고 리사이클 뷰를 추가했습니다 (이것이 주요 관심사는 아닙니다). 둘 다에 대한 자습서를 따르십시오. 조각 클래스는 내가onCreateView 및 onCreatedView에 Nullable 사용 사용

@Nullable 
@Override 
public View onCreateView (LayoutInflater inflater, @Nullable 
    ViewGroup container, @Nullable Bundle savedInstanceState){ 
    View rootView = inflater.inflate(R.layout.absent, container, false); 
    return rootView; 
} 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
} 

그래서 여기 @Nullable의 사용이 무엇인지? .I이 여러 번 검색 한하지만 난 그것을 사용 그리고 심지어 튜토리얼 @nullabe .Can에 대해 아무것도 언급하지 않은 이해할 수없는 코드가 누구나 내가이 사실을 이해하게 할 수 있니? 이미 내가 추가했기 때문에 recycler보기에 관해 이야기하는 것을 귀찮게하지 마십시오.

답변

2

The @Nullable annotation indicates a variable, parameter, or return value that can be null "NullPointerException"이 발생했습니다. 값이 null이기 때문입니다.

Integer x; 

'x'값을 지정하지 않았으므로 오류가 발생하여 null이됩니다. 하지만 일부 유스 케이스에서 실제로 null 일 수있는 변수가 있다면 어떻게 될까요? 음, @ Nullable 주석을 사용하면 null이 될 수 있습니다.

@Nullable Bundle savedInstanceState 

이 경우 번들에는 아무 것도 저장되어 있지 않을 수 있습니다. 따라서 메서드가 호출 될 때 null이 될 수 있습니다.

동일는 입력 매개 변수가 널 (NULL)이 될 수 있다고 (과) 반환 그것은 컴파일러를 알려주는 컴파일시 주석의

+1

@DanielNugent 아, 감사합니다! 그런 루키 실수! –

1

@ Nullable은 null 값을 갖는 변수를 인수로 허용합니다. 그리고 메소드의 경우, 호출 된 메소드가 널 값을 리턴 할 수 있습니다. 자세한 내용은 다음 answer을 확인하십시오.

1

null이 될 수 있음을 의미하는 방법 onCreateView()에 간다. 따라서이 시나리오를 처리 할 수 ​​있어야합니다. 또한 다른 코드 분석기에서 코드를 분석하고 잠재적 인 오류를 찾을 수 있습니다. 플립 측면에서

는 또한 방법은 수락하거나 null 객체를 처리하지 않는 것을 말한다 @NonNull 주석이 있습니다. 따라서 LINTer를 사용하면 null 객체가 전달되면 경고 또는 오류가 발생합니다.

런타임에 이러한 주석이 하나도 없습니다. 그들은 당신을 더 높은 품질의 코드를 생산하도록 안내하기위한 것입니다.