我正在尝试创建一个extends
另一个类(JFrame
)的自定义类,但强制在实现时分配某个变量(我希望我的应用程序中的每个JFrame
都有“屏幕ID”)。但是,Java没有抽象变量。我也无法弄清楚如何制作扩展JFrame
的界面。这个真的让我头晕目眩= D
类代码看起来类似于:
public interface CustomFrame extends javax.swing.JFrame {
public abstract int screen_id;
}
CustomFrame
的实现看起来像这样:
public class NewFrame implements CustomFrame {
public int screen_id = 5;
NewFrame() {
setVisible(true);
// etc...
}
}
这个问题对任何人都有意义吗?我知道我的目标是什么,我只是失去了试图在我的大脑中解决它....
答案 0 :(得分:0)
创建一个外部FrameID生成器,在每次调用时生成一个新ID(只是一个实现为singleton的简单示例:no synch或generic return type等):
class FrameIDGenerator {
private static int nextID = 0;
private FrameIDGenerator(){}
private static FrameIDGenerator instance = null;
public final static FrameIDGenerator getInstance() {
if(null == instance) instance = new FrameIDGenerator();
return instance;
}
public int getNextID() {
return ++nextID;
}
}
答案 1 :(得分:0)
根据我的理解,它是第三方(不是JFrame
本身)需要这个号码。我不认为强迫JFrame
(已经有很多顾虑)加入这个负担是个好主意。
请考虑保留外部IdentityHashMap<JFrame,Integer>
以存储此信息的替代方法。