我正在编写一个java代码。我有一个抽象类A
。任何用户都可以从A
-lets说B
扩展一个类 - 并且可以使用它。
我想要做的是强迫用户只将String
类型添加到类B
。为什么我想要这个是因为稍后我会动态获取并设置类B
的字段,它们必须是字符串格式。
有没有办法实现这个目标?
答案 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");
}
}
}
}
要非常小心并牢记方法的所有缺点并使用反射。