如何强制一个类有一种类型的字段

时间:2013-11-18 11:35:31

标签: java variables inheritance types

我正在编写一个java代码。我有一个抽象类A。任何用户都可以从A -lets说B扩展一个类 - 并且可以使用它。

我想要做的是强迫用户只将String类型添加到类B。为什么我想要这个是因为稍后我会动态获取并设置类B的字段,它们必须是字符串格式。

有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:4)

不可能,您不能(在功能上)对未来的字段施加限制。你只需记录它或完全修改你的方法。

答案 1 :(得分:0)

几乎做你想做的事的唯一方法就是要求该领域的getter和setter。

public abstract A {
  public String getField ();
  public void setField (String value);
}

答案 2 :(得分:0)

首先,如前所述,通常您不想这样做,因此第一个建议是修改您的应用程序设计。

从纯Java编码的角度来看,您可以在抽象类构造函数中使用反射来检查字段类型,因此如果类不满足您的要求,您的类的用户将永远不会运行代码

public abstract class A {
    public A() {
        for (Field field : this.getClass().getDeclaredFields()) {
            if (field.getType() != String.class) {
                throw new RuntimeException("only String type of fields are allowed");
            }
        }   
    }
}

要非常小心并牢记方法的所有缺点并使用反射。