2010-01-16 5 views
6

편집을 구현 해결,자바 - 확인 객체가 인터페이스

안녕 아래 자바에서

를 참조, 나는 모든 클래스 될 수있는 객체를 얻었다. 하지만 그 객체는 항상 인터페이스를 구현해야하므로, 인터페이스에 의해 정의 된 메소드를 호출 할 때, 그 객체는 그 메소드를 포함 할 것이다.

이제 자바의 일반 객체에 대한 사용자 정의 메소드를 호출하려고하면 입력에 관한 mucks가 발생합니다. 어떻게하면 내 객체가 해당 인터페이스를 구현하는지 컴파일러에 알릴 수 있으므로 메서드 호출은 괜찮습니다.

Object(MyInterface) obj; // Now the compiler knows that obj implements the interface "MyInterface" 
obj.resolve(); // resolve() is defined in the interface "MyInterface" 

이 어떻게 자바에서 그렇게 할 수 있습니다

기본적으로 내가 무엇을 찾고있어이 같은 것입니다?

답변 : 인터페이스가하는 MyInterface라는 경우 OK, 당신은 단지 .... 게시하기 전에 생각을하지 않는

MyInterface obj; 
obj.resolve(); 

죄송합니다

+0

* 마지막으로 말하면 +1 : +1 –

답변

1
if (object instanceof MyInterface) { 
    ((MyInterface) object).resolve(); 
} 
1
MyInterface a = (MyInterface) obj; 
a.resolve(); 

또는

((MyInterface)obj).resolve(); 
를 넣을 수 있습니다

자바 컴파일러는 정적 유형을 ch에 사용합니다. 메소드에 대해 eck를 사용하므로 객체를 인터페이스를 구현하는 유형으로 캐스팅하거나 인터페이스 자체에 캐스팅해야합니다.

3

당신은 단지 type cast 함께 할 :

((MyInterface) object).resolve(); 

보통이 캐스트가 유효한지 확인하기 위해 검사를 수행하는 것이 가장 좋습니다 - 그렇지 않으면, 당신은 ClassCastException를 얻을 수 있습니다. MyInterface을 구현하지 않은 것은 MyInterface 개체에 구부리지 마십시오. 이 수표를 보내는 방법은 instanceof 연산자를 사용하는 것입니다 :