使用注释动态地向对象添加字段(Java / Groovy)

时间:2014-04-14 14:26:08

标签: java groovy annotations abstract-syntax-tree

我尝试使用Java注释来向对象添加特定字段。

需要如下:我有一个处理配置文件的类,其中键与值 key = value 的值相关联。

问题在于我希望能够让用户自己定义必要的字段,如果不存在,则抛出异常。

最简单的解决方案是将这些字段传递给String []中的构造函数但是,我还希望用户能够使用这些必需字段,因为它是类的属性,因此他能够在代码中写道:

@RequiredFields(
    field1,
    field2,
    field3)
MyClass myObject = new MyClass(String filePath);
String value = myObject.field1;

字段 field1 也是完成提案吗?

我实际上是在Groovy中开发,所以如果在标准Java中不可能,它会在Groovy中吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

进行验证的工厂方法怎么样?类似的东西:

MyClass my = MyClassFactory.create("arg1", "arg2")

或者,使用Groovy上的地图:

def my = MyClassFactory.create arg1: "foo", arg2: "bar"

工厂本身会检查属性文件。


如果你真的想要注释,也许JDK 8上的Type Annotations是一个选项。

在Groovy上,你可以尝试一个local AST,这对我来说似乎是一个过度设计的解决方案,或GContracts这是按合同编程。

您可以将工厂与GContracts组合到@Ensure,结果对象包含根据属性文件的所有字段。