java - 使用在接口(interface)中声明的方法,而不是在类中声明的方法

标签 java swing class user-interface interface

所以我有一个包含非特定 JPanel 的对象: private static JPanel setPanel;

我有很多 JPanel 子类,用于我在 JFrame 上交换的不同类型的屏幕,它们的行为不同。现在,每个子类都实现了某种方法 getKeyPress() ,并且我创建了一个包含此方法的接口(interface),每个 JPanel 子类也实现了该方法。我的问题是我是否可以通过我的通用 setPanel 对象引用该方法,如: setPanel.getKeyPress()以某种方便的方式,或者我是否必须使用其中的一个方法创建 JPanel 的子类,然后让每个子类成为该子类的子类?

最佳答案

...or do I have to create a subclass of JPanel with that one method in it and then have each subclass be a subclass of that one?

这就是您自己的MyJPanel(或类似)类(无论是否抽象)的方法。然后,您在整个代码中使用 MyJPanel。这可以让您在编译时检查您正在处理的子类之一,并为您提供一个方便的位置来添加更多方法(如果需要)。

可以

((TheInterface)setPanel).getKeyPress();

...但它很笨拙,并且您会丢失编译时代码检查(以及所有反对强制转换的常见参数)。

关于java - 使用在接口(interface)中声明的方法,而不是在类中声明的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37939872/

相关文章:

java - 找出每个线程中 hibernate 的确切时间

python - 将列表输入类中无法取出对象

python - 如何动态构造方法?

java - 加载 100 条记录 10 x 10 jtable java 的文本文件?

python - 我应该为 Python 中的类作用域变量使用 "global"还是 "self."?

java - 从空格分隔值读取字符数组

Java 和 JNA 为 C 函数传递参数

java - 主线程何时触发可观察链

java - 如何在没有 XML 文件的情况下使屏幕可滚动?

java - JTextField 和绘图图像不起作用