所以我有一个包含非特定JPanel的对象:
private static JPanel setPanel;
我有很多JPanel子类用于不同类型的屏幕我在我的JFrame上交换,其表现不同。现在,这些子类中的每一个都实现了某个方法getKeyPress()
,并且我创建了一个包含此方法的接口,这些JPanel子类中的每一个都实现了该方法。我的问题是我是否可以通过我的通用setPanel对象引用该方法,如:setPanel.getKeyPress()
以某种方便的方式引用该方法,或者我是否必须使用其中的一个方法创建JPanel的子类,然后拥有每个子类是那个的子类?
答案 0 :(得分:1)
...或者我是否必须使用其中的一个方法创建JPanel的子类,然后让每个子类成为该子类的子类?
这是你要去的方式,你自己的MyJPanel
(或类似的)类(抽象与否)。然后,在整个代码中使用MyJPanel
。这为您提供了编译时检查,使您可以处理其中一个子类,并在需要时为您提供方便的位置来添加更多方法。
你可以做
((TheInterface)setPanel).getKeyPress();
...但是它很笨拙,你丢失了编译时代码检查(以及反对强制转换的所有常见参数)。