2012-05-24 106 views
1

我讀過關於Java接口,現在我想打一個接口,它允許我創建的建築象下面這樣:爪哇 - 理解接口

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保留字會告訴你如果給定對象是類的實例 - 無論是通過繼承或實現

大衛答案B.編輯你問題的前半部分 - 在對象本身上調用onTouch(arg0,arg1)。

myObject.onTouch(arg0,arg1); 

只看見自己的編輯 - 如果你使用instanceof關鍵字,你可以,如果給定的對象實現了接口(這意味着將有onTouch方法)檢查​​。 請參閱上面的代碼塊以瞭解這種實現。

1

實現接口必須覆蓋在接口布局的方法,所以當它涉及到知道,如果一個類都將有你從一個接口對象調用該方法的實現,你可以高枕無憂的任何類。

要從onTouchListener你只需要在對象傳遞給onTouchListener類型的引用,並從那裏去

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

對於你的問題的第二部分叫onTouch,我覺得this StackOverflow question應該是有用的您。

1

我怎樣才能調用onTouch方法從OnTouchListener接口,如果我 不知道是哪個類實現呢?

接口不調用方法。由於這是向我描述,它們形成的界面,並且,無論是什麼對象實現了這個接口,它必須具有以下簽名下面的方法開發者之間的合同。

MyClass,你會調用onTouch以同樣的方式,你會任何其他功能 - 通過在ViewMotionEvent它。

我怎樣才能知道哪些類實現了這個接口,如果我 決定從接口(不同的庫)單獨的類?

Javadoc是您的朋友(作爲開發人員)。或者,如果您正在對某個集合執行某些操作(例如ArrayList,Stack,Queue或其他保存爲Objects的操作),則可以使用以下語法來確保無論如何,您正在使用的集合僅包含對象實施你的界面:

ArrayList<? extends View.OnTouchListener> myArrayList;