Java理解接口
我已经阅读了Java中的接口,现在我想制作一个接口,它允许我创建如下结构:Java理解接口,java,android,interface,Java,Android,Interface,我已经阅读了Java中的接口,现在我想制作一个接口,它允许我创建如下结构: public class MyClass implements View.OnTouchListener { //Implementation public boolean onTouch(View arg0, MotionEvent arg1) { /*SOME CODE*/ return true; } } 所以我想创建类似的接口(类)。如果我不知道是哪个
public class MyClass implements View.OnTouchListener {
//Implementation
public boolean onTouch(View arg0, MotionEvent arg1) {
/*SOME CODE*/
return true;
}
}
所以我想创建类似的接口(类)。如果我不知道是哪个类实现了OnTouchListener
接口,如何从该接口调用onTouch
方法?若我决定从接口(不同的库)中分离类,那个么如何知道哪些类实现了这个接口?希望你明白我的意思
非常感谢 实现接口的任何类都必须重写接口中列出的方法,因此,在了解某个类是否将实现从接口对象调用的方法时,您可以放心 要从
onTouchListener
调用onTouchListener
,只需将对象传递到类型为onTouchListener
的引用,然后从那里开始
onTouchListener myOnTouchListener = new MyClass();
myOnTouchListener.onTouch(arg0, arg1);
关于你问题的第二部分,我认为应该对你有用。我觉得我理解了你问题的一部分 如果我决定从接口中分离类(不同的库),我如何知道哪些类实现了这个接口 使用类似的设置
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 reserve word将告诉您给定的对象是否是该类的实例——无论是通过继承还是通过实现
David B.回答了您问题的前半部分——在对象本身上调用onTouch(arg0,arg1)
myObject.onTouch(arg0,arg1);
刚才看到了您的编辑——如果使用instanceof关键字,您可以检查给定对象是否实现了接口(这意味着它将具有onTouch方法)。
请参阅上面的代码块以了解此类实现
如果我需要,如何从OnTouchListener
接口调用onTouch
方法
不知道是哪个类实现了它
接口不调用方法。正如我所描述的那样,它们在接口和开发人员之间形成了一个契约,不管是什么对象实现了这个接口,它都将拥有具有以下签名的以下方法
在MyClass
中,您将调用onTouch
,调用方式与调用任何其他函数的方式相同-将视图和运动事件传递给它
如果我
决定将类与接口分开(不同的库)
Javadoc是您的朋友(作为开发人员)。或者,如果您正在对集合执行某些操作,例如ArrayList
、Stack
、Queue
,或者包含对象的操作,则可以使用以下语法来保证,无论发生什么情况,您使用的集合都只包含实现接口的对象:
ArrayList<? extends View.OnTouchListener> myArrayList;
ArrayList