尝试找到一种包装对象的方法,该方法是基于具有大量getter和setter的某些模型自动生成的。例如:
class ObjectToWrap {
public int getIntA();
public int getIntB();
... // Tons of other getters
}
我有创建一个包装此对象的包装器,并使用一些注释为我生成ObjectToWrap
方法。代码如下所示:
class Wrapper {
private ObjectToWrap obj;
public int getIntA() {
return obj.getIntA();
}
public int getIntB() {
return obj.getIntB();
}
... // Tons of other getters
}
是否有注释要执行此操作?我只是不想让代码看起来很冗长。
答案 0 :(得分:3)
看看Project Lombok,它有一个@Delegate注释,可以完全按照你想要的那样。
我认为你可以这样做:
import lombok.Delegate;
class Wrapper {
//the types field in the annotation says
//to only auto generate deleagate methods
//for only the public methods in the ObjectToWrap class
//and not any parent classes if ObjectToWrap extended something
@Delegate(types = ObjectToWrap.class)
private ObjectToWrap obj;
}
答案 1 :(得分:0)
如果您正在使用具有依赖关系管理的 maven 构建基础结构,则可以使用依赖子项目按原样收集生成的源(而不是代码)。然后,另一个子项目可以生成真正的源代码(源代码转换)作为zip,然后maven可以在主项目中作为预编译目标导入。
在此基础上,您可以使用动态代理类,甚至可以使用立即生成的类。
唯一的另一种选择是使用 java scripting API,并以JavaScript等方式开展业务。失去java的类型安全性并降低软件质量。
不幸的是,混合使用另一种JVM语言的替代方案我不能认为有效。非常好的和强大的Scala仍然过于狂野/复杂/痒。