我已经阅读了Java中的接口,现在我想创建一个允许我创建如下构造的接口:
public class MyClass implements View.OnTouchListener {
//Implementation
public boolean onTouch(View arg0, MotionEvent arg1) {
/*SOME CODE*/
return true;
}
}
所以我想创建类似的接口(类)。如果我不知道哪个类实现了它,我如何从onTouch
接口调用OnTouchListener
方法?如果我决定从接口(不同的库)中分离类,我怎么能知道哪些类实现了这个接口?希望你明白我的意思。
非常感谢!
答案 0 :(得分:1)
任何实现接口的类都必须覆盖接口中列出的方法,因此在知道某个类是否具有从接口对象调用的方法的实现时,您可以轻松休息。
要从onTouch
拨打onTouchListener
,您只需将对象传递到onTouchListener
类型的引用,然后从那里开始
onTouchListener myOnTouchListener = new MyClass();
myOnTouchListener.onTouch(arg0, arg1);
对于问题的第二部分,我认为this StackOverflow question应该对您有用。
答案 1 :(得分: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*/
}
保留字的实例将告诉您给定对象是否是该类的实例 - 无论是通过继承还是实现
David B.回答了你问题的前半部分 - 在对象本身上调用onTouch(arg0,arg1)。
myObject.onTouch(arg0,arg1);
刚看到你的编辑 - 如果你使用instanceof关键字,你可以检查给定的对象是否实现了接口(这意味着它将具有onTouch方法)。 请参阅上面的代码块以了解此类实现。
答案 2 :(得分:1)
如果我,如何从
onTouch
界面调用OnTouchListener
方法 不知道哪个类实现了它?
接口不调用方法。正如我所描述的那样,它们在接口和开发人员之间形成了一个契约,无论什么对象实现此接口,它都将具有以下签名的方法。
在MyClass
中,您可以像调用任何其他功能一样调用onTouch
- 将View
和MotionEvent
传递给它。
如果我,我怎么知道哪个类实现了这个接口 决定将类与接口(不同的库)分开?
Javadoc是你的朋友(作为开发者)。或者,如果您正在对某个集合执行某些操作,例如ArrayList
,Stack
,Queue
或包含Objects
的内容,则可以使用以下语法来保证无论如何,您使用的集合仅包含实现您的界面的对象:
ArrayList<? extends View.OnTouchListener> myArrayList;