从静态方法调用所有实例上的接口方法

时间:2014-09-12 21:19:48

标签: java interface

我不知道该怎么做或者是否有可能。基本上我正在编写自己的gui系统,我想要一个界面来处理点击检测。 gui元素(GuiButton等)都是GuiElement的子类。我想要的是能够静态调用GuiElement.onCLick(x,y),然后让这个类的所有子类实例触发它们被覆盖的OnCLickListener接口。

基本上我不想保留每个元素的引用并循环遍历它。

1 个答案:

答案 0 :(得分:0)

我假设您正在编写自己的GUI作为练习。

评论是对的,您可能不希望保留对GuiElement的所有实例的引用,但您必须这样做。更重要的是,您可能不希望对GuiElement.onClick(x, y)进行静态调用。像这样的静态调用是一种代码气味......甚至更多,你可能不希望将鼠标点击传播到所有GuiElement,而只传播到位于GuiElements的{​​{1}}。

您应该看看如何在Swing中定义MouseEvent。即使Swing有一些缺点,它的大多数基本概念都是合理的。研究它是如何实现的将给你一些指向正确方向的指针。编写自己的GUI层是一个非常好的练习,它是面向对象设计的一个非常好的操场,但是一些阅读将帮助你在这个方向上走很长的路。