0

我正在尝试创建一个自定义类,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...
    }
}

这个问题对任何人都有意义吗?我知道我的目标是什么,我只是迷失在我的大脑中试图解决它......

4

2 回答 2

0

创建一个在每次调用时生成一个新 ID 的外部 FrameID 生成器(只是一个实现为单例的简单示例:没有同步或通用返回类型等):

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;
  }
}
于 2013-08-23T22:22:36.987 回答
0

据我了解,JFrame需要该号码的是第 3 方(而不是其本身)。我认为试图强迫JFrame(已经有很多担忧)承担这个负担不是一个好主意。

请考虑保留外部IdentityHashMap<JFrame,Integer>存储此信息的替代方案。

于 2013-08-23T22:33:06.553 回答