是否有Java包装器注释?

时间:2014-08-08 08:57:26

标签: java design-patterns

尝试找到一种包装对象的方法,该方法是基于具有大量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
}

是否有注释要执行此操作?我只是不想让代码看起来很冗长。

2 个答案:

答案 0 :(得分:3)

看看Project Lombok,它有一个@Delegate注释,可以完全按照你想要的那样。

@Delegate documentation

我认为你可以这样做:

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仍然过于狂野/复杂/痒。