如何解决Java自动生成属性的方法
我正在用Java开发一个项目,对于类中的每个属性,我都有以下方法:
private MyType property;
public MyType getProperty() {
return this.property == null ? null : this.property.value;
}
public MyType getPropertyElement() {
if (this.property == null)
this.property = new MyType();
return this.property.value;
}
public bool hasProperty() {
return this.property != null;
}
public void setProperty(MyType property) {
this.property = property;
}
此外,如果MyType
是列表,那么还有方法addProperty
。
在python中,我无法通过使用元类或装饰类来实现此功能。 在C ++中,我可以使用宏来实现此行为。在这两种情况下,我都会在“类编译”期间将方法添加到类中。
有没有一种类似于Java中的机制?还有另一种方式可以实现这一目标吗?
我看到了一个名为lombok
的库,该库使用注释来生成代码。自己写这样的东西简单吗?
解决方法
基本上,Lombok采取的方法是您要实现的Java中唯一可能的方法。自己编写这样的代码是简单还是容易,取决于您编写Java批注处理器的经验–完成几次之后,您肯定会说很容易……
但是Java注释处理器仍然存在一些限制,这使得实现您的目标变得有些复杂。因此,首先,注释处理器无法修改Java源代码,甚至不能即时修改(至于Java 8到Java 11,至少–尚未检查较新的版本)。它只能生成新的源文件,意味着扩展/增强现有类的新类(或接口)。
因此,建议您先尝试Lombok,看看它是否足够接近您的需求……
,自己写这样的东西简单吗?
不,绝对不是。
我不建议在已经存在好的自行车的情况下重新发明一辆自行车。
我也不明白为什么你不想使用Lombok来摆脱很多样板代码(getter,setter,构造函数,toString()等)
您只需为IDE和Lombok jar(或依赖项)提供一些相应的插件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。