2011-04-08 58 views
0

我正在编写使用jfree生成图形的应用程序。为选择特定图形提供了一个组合框。我为不同的图形维护了不同的类。并且使用switch语句在选择时调用这些特定的类一种图形。现在我想消除这个开关,并使其工作动态。例如,如果一个新的图类被选中,我应该能够调用该类,而不是在switch中写入更多的情况。Java中的回调会为此提供帮助。如果是,如何?还有其他方法可以做到这一点。在Java中使用回调

回答

1

这听起来像你真正想要的是Interface。如其中一样,任何Graph实例都可以提供的通用API。那么你不需要特别担心选择了哪种图表,因为每个图表都公开了相同的回调API。例如,你可能有这样的:

public interface Selectable { 
    public void onSelect(); 
} 

然后你作为超使用您的图形实现,像一个抽象Graph类:

public abstract class Graph implements Selectable { 
} 

然后你只标出每个图实现extends Graph,编译器会确保你在每一个中都实现了onSelect()。完成之后,您的switch声明可以通过调用图的onSelect()方法来替代。

在Java中,通过使用反射和类,可以在完全随意的对象上执行真正的动态回调/方法调用,但它确实不是直截了当的,对于你想要做的事听起来有点矫枉过正。