2012-05-24 78 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;