Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java理解接口_Java_Android_Interface - Fatal编程技术网

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; } } 所以我想创建类似的接口(类)。如果我不知道是哪个

我已经阅读了Java中的接口,现在我想制作一个接口,它允许我创建如下结构:

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