2011-12-12 2 views
2

나는이 책을 지금 읽었습니다.인터페이스의 참조를 null로 지정할 수 있습니까?

public class AdapterWrapper implements ListAdapter { 
    ListAdapter delegate=null; 

    // other code 

} 

ListAdapter 만든 null이 할당 된 공중 인터페이스 및이 인터페이스의 기준이다. 이게 유효합니까? 나는 이것으로 정말로 혼란 스럽다.

답변

4

예, 유효합니다. 단지 delegateListAdapter 인터페이스에 대한 참조이며 현재 null을 가리키고 있음을 의미합니다.

나중에는 ListAdapter 인터페이스를 구현하는 모든 클래스, 같은 SimpleCursorAdapter, WrapperListAdapter 또는 원하는 다른 구현을 지적 할 수있다.

참조로 인터페이스 유형을 사용하면 런타임에 어떤 클래스가 될지 미리 알 수없는 경우 유용합니다. 그래서 여러분은 단지 인터페이스를 가리키는 참조를 사용합니다.

2

변수의 값은 null 참조입니다. 이것에 대해서는 아무런 문제가 없습니다.

모든 참조 유형 변수의 값은 호환 가능한 유형의 인스턴스에 대한 참조이거나 null입니다. 이것은 클래스와 인터페이스 모두에서 동일합니다.

+0

ErichLancaster : 예, 인터페이스가 개체로 직접 존재하지 않습니다. 객체는 항상 인터페이스를 구현할 수있는 일부 클래스에서 만들어집니다. 따라서 인터페이스 변수에는이 인터페이스를 구현하는 클래스의 일부 객체에 대한 참조 또는 null이 포함됩니다. –

2

그냥 여기 Interface(Java)에 위키 백과를 인용 : 자바에서

객체 참조가 인터페이스 타입으로 지정 될 수있다; 이 경우에는 null이거나 인터페이스를 구현하는 이있는 객체에 바인딩되어야합니다.

코드는이 정의에 따라 유효합니다.

관련 문제