2012-05-24 2 views
1

내가 자바 인터페이스에 대해 읽고 한 지금 나는 나를 아래와 같은 구조를 만들 수있는 인터페이스를 만들고 싶어 :자바 이해 인터페이스

public class MyClass implements View.OnTouchListener { 
    //Implementation 
    public boolean onTouch(View arg0, MotionEvent arg1) { 
     /*SOME CODE*/  
     return true; 
    } 
} 

그래서 나는 비슷한 인터페이스 (클래스)를 만들려면을 . 인터페이스를 구현하는 클래스를 모르는 경우 어떻게 OnTouchListener 인터페이스에서 onTouch 메서드를 호출 할 수 있습니까? 그리고 클래스를 인터페이스 (다른 라이브러리)와 분리하기로 결정한 경우이 인터페이스를 구현하는 클래스를 어떻게 알 수 있습니까? 당신이 무슨 뜻인지 알기를 바랍니다.

고맙습니다.

답변

1

귀하의 질문에 대한 이해가 느껴집니다.

어떻게 내가

MyClass myObject = new MyClass(); 
if(myObject instanceof myInterface){ //if the object implements the interface 
    /*Do Something*/ 
} 
else{ 
    /*Do Something Else Not Including the Method*/ 
} 

같은 설정을 사용하여 (다른 라이브러리)

인터페이스에서 별도의 클래스로 결심했다면,이 인터페이스를 구현하는 클래스를 알 수있는 instanceof를 예약 단어는 말할 것이다 주어진 객체가 해당 클래스의 인스턴스인지 여부 - 상속 또는 구현을 통하는 경우

David B. answer 질문의 첫 번째 절반 - 객체 자체에 대해 onTouch (arg0, arg1)를 호출하십시오.

myObject.onTouch(arg0,arg1); 

은 그냥 편집을 보았다 - 당신이 instanceof를 키워드를 사용하는 경우 지정된 객체 (는 onTouch 방법을 것 의미) 인터페이스를 구현하는 경우, 당신은 확인할 수 있습니다. 이러한 구현에 대해서는 위 코드 블록을 참조하십시오.

1

인터페이스를 구현하는 모든 클래스는 인터페이스에 배치 된 메서드를 재정의해야하므로 클래스가 인터페이스 객체에서 호출하는 메서드에 대한 구현을 가질 것인지 쉽게 알 수 있습니다. 방금 유형 onTouchListener의 참조에 객체를 전달하고있다

onTouchListener myOnTouchListener = new MyClass(); 
myOnTouchListener.onTouch(arg0, arg1); 

에서 질문의 두 번째 부분 들어 갈 필요가 onTouchListener에서 onTouch 전화를

, 나는 this StackOverflow question이에게 유용해야한다고 생각 당신.

1

내가 그것을 구현하는 클래스 모르는 경우 어떻게 onTouch 방법 인터페이스 OnTouchListener에서 호출 할 수 있습니다?

인터페이스는 메소드를 호출하지 않습니다. 그것은 나에게 설명했듯이 인터페이스와 개발자간에 계약을 맺음으로써이 인터페이스를 구현하는 객체가 무엇이든 관계없이 다음과 같은 서명과 함께 다음과 같은 메소드를 갖게됩니다. View과에 MotionEvent A의 통과 -

MyClass에서는 onTouch 당신이 다른 기능을하는 것과 같은 방법으로 호출 할 것이다.

그리고 나는 인터페이스 (다른 라이브러리)로부터 클래스를 분리하기로 결심했다면,이 인터페이스를 구현하는 클래스를 어떻게 알 수 있습니까?

Javadoc은 (개발자로서) 귀하의 친구입니다. 또는 ArrayList, , Queue 또는 Objects을 포함하는 컬렉션과 같은 컬렉션에서 작업하는 경우 다음 구문을 사용하여 사용하는 컬렉션에 포함 된 개체 만 포함되도록 할 수 있습니다. 인터페이스 구현 :

ArrayList<? extends View.OnTouchListener> myArrayList;