有多少种方法是接口的理想数量?那么如何判断一个接口有多少方法来实现呢? Mouselistener接口会有5个方法吗?:
// ToggleButton Listener Class:
class ToggleButton implements MouseListener {
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mouseClicked(MouseEvent e) {
// e.getButton() returns 0, 1, 2, or 3, where 1 is the
// left mouse button and 3 is the right mouse button:
mousebutton = e.getButton();
// Identify which JButton was clicked on by getting the
// source of the event e; Book, p. 484 (Event and Event
// Source);
// e.getSource() returns an object of the Object
// superclass, and that object has to be cast to a
// JButton with (JButton):
JButton B = (JButton)e.getSource();
nextSymbol( B );
}
} // end ToggleButton class
答案 0 :(得分:0)
嗯,您可以先转到documentation 并计算那里的方法数量,注意从its super interface抓取任何方法。
有多少种方法是接口的理想数量?
尽可能多的需求,不多也不少。声音翻转,但事实并非如此:答案真的取决于它。有些接口定义none(yes,none; cf. EventListener
)或一种方法others define many方法。两者都有意义。
如何判断一个接口有多少方法来实现?
您不能这样做,因为在实现接口的类中定义的某些方法可能特定于类而不是接口。
Mouselistener接口会有5种方法吗?
查看文档,是的。
答案 1 :(得分:0)
没有理想的数字。这取决于有问题的界面。
例如,Runnable
有一个重要的方法void run()
,而List
有[很多[(http://docs.oracle.com/javase/6/docs/api/java/util/List.html)。 Serializable
甚至没有,只是marker interfaces精神中的语义标记。
前者是作为对象动态给出的方法的轻量包装器,而后者是列表应该能够做的非常广泛的契约。
您需要做的只是声明您需要的方法,而忽略您不需要的方法。
您可以在创建自己的时候进行扩展。例如,BasicClickListener
可以听取点击次数,而ExtendedClockListener
扩展BasicClickListener
也可以处理拖动和鼠标悬停。
官方MouseListener为five。
答案 2 :(得分:0)
您可以通过一点反射检索接口(或类)上的方法数。通过定义以下方法,ToggleButton
可以反射性地获得可用类的数量
public void countInterfaceMethods(){
//this will get an array of all the interfaces your class implements
Class<?>[] clazz = this.getClass().getInterfaces();
//retrieve only the first element of the array, because ToggleButton implements only one interface
Class<?> theFirstAndOnlyInterface = clazz[0];
//get all the methods on that interface
Method[] theArrayOfMethods = theFirstAndOnlyInterface .getMethods();
//get the length of the array. This is the number of methods in that interface
int numberOfMethods = theArrayOfMethods.length;
}
从技术上讲,正如您所看到的,这是可行的。但仅仅因为某些事情是可行的并不意味着它应该被完成