我必须使用一个附带一些例子的API。在其中一个示例中,直接使用接口调用该接口的其中一个方法。但是,由于Interface不包含任何实现,所以我想知道:如何在示例中使用方法来完成任何操作,而无需定义实现该接口的类?或者,界面是否也包含完整的方法定义? (这似乎是这里的情况)Java接口问题
Q
Java接口问题
0
A
回答
4
不,接口只包含方法签名。你不能在界面中实现。
什么是(最有可能)你的情况发生的事情是像(伪):
InterfaceA {
methodA();
}
class A implements InterfaceA {
methodA() // implementation
}
InterfaceA getInterface() {
// some code which returns an object of a class which implements InterfaceA
}
调用方法:
InterfaceA in = getInterface() // you might get an instance of class A or any other class which implements InterfaceA
in.methodA(); // implementation from whatever class the method returned
2
2
- 具体实现的接口必须存在。然而它被接口引用,这就是为什么它看起来像接口上的调用方法。
- 接口不能有实现(“完整的方法定义”)
查找在其中创建的对象。你可以有:
public void doSomething() {
MyInterface interface = new MyInterfaceImplementation();
doSomething(interface);
}
public void doSomethingElse(MyInterface interface) {
interface.someMethod();
}
因此通过观察doSomethingElse()
方法也可能会出现,它并没有实现,但谁调用的方法提供的实现(MyInterfaceImplementation
在这种情况下);
1
一个接口只是定义一个合约。你必须有一个实现来做实际的事情。
你所指的是“Program to an interface, not an implementation”,这是最佳做法。
或者API可能使用Dependency Injection来提供实现,但您只会看到代码是如何使用的。
1
也许你的意思是这样:
(new Runnable(){
public void run() {
System.out.println("I'm running already!");
}
}).run();
如果是这样,它被称为anonymous inner class。
1
还有你可能会谈论两两件事:
public static void sort(List list, Comparator c){ ... }
这里,参数list
有接口类型List
但任何人谁调用该方法将有一个具体的类的实例来传似ArrayList
那实现接口,并且方法的代码将调用具体类的方法 - 这种机制被称为“动态方法调度”,它是多态的核心OO原则的核心。
sort(myList, new Comparator(){
public int compare(Object o1, Object o2){
...
}
});
这是一个匿名类的例子:代码实际上定义了一个新的类,而不实现了Comparator
接口的名称,并在同一时间创建类的实例。这在Java中主要用于其他语言将使用语言结构(如函数指针,闭包或回调)的事物:传递一段代码以在您调用的方法中执行。
相关问题
- 1. Java接口问题
- 2. Java接口问题
- 3. Java接口问题
- 4. Java接口的问题
- 5. Java接口扩展问题
- 6. Java接口实现问题
- 7. Java线程 - 接口问题
- 8. java接口...快速问题
- 9. Java接口实现问题
- 10. 接口问题
- 11. 接口问题
- 12. JAVA RMI dispatchUncaughtException - 接口投射问题
- 13. java类/接口适配器问题
- 14. Java此接口有什么问题
- 15. 问题,在接口的Java泛型
- 16. Java接口和抽象类的问题
- 17. Arduino与Java的接口问题
- 18. 问题与Java泛型接口
- 19. 的Groovy + Java接口继承问题
- 20. Java接口测试和编码问题
- 21. Java接口类型基本问题
- 22. 问题创建java本地接口
- 23. 在java中使用接口..Newb问题
- 24. 来自Java的地图接口问题
- 25. C#接口问题
- 26. 问题在接口
- 27. C#接口问题
- 28. Iphone接口问题
- 29. C#接口问题
- 30. C#接口问题
你可以发布代码示例吗?即使名称改变了,也有助于获得准确的答案。 – Jean 2010-01-26 10:44:05