有Java包装注解吗?

问题描述 投票:0回答:2

尝试找到一种方法来包装对象,该对象是基于某些具有大量 getter 和 setter 的模型自动生成的。例如:

class ObjectToWrap {

    public int getIntA();

    public int getIntB();

    ... // Tons of other getters
}

have创建一个包装器来包装这个对象,并使用一些注释为我从

ObjectToWrap
生成方法。代码如下所示:

class Wrapper {
    private ObjectToWrap obj;

    public int getIntA() {
        return obj.getIntA();
    }

    public int getIntB() {
        return obj.getIntB();
    }

    ... // Tons of other getters
}

有注释可以做到这一点吗?我只是不想让代码看起来很长。

java design-patterns
2个回答
7
投票

看看 Project Lombok,它有一个 @Delegate 注释,它完全可以满足您的需求。

@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
投票

如果您使用具有依赖管理功能的 maven 构建基础设施,您可能有一个依赖子项目,它按原样收集生成的源(而不是代码)。然后,另一个子项目可以从中生成真正的源代码(源代码转换)作为zip,然后可以由maven在主项目中导入作为预编译目标。

在此基础上,您可以使用动态代理类,甚至直接生成的类。


唯一的其他选择是使用 java scripting API,并使用 JavaScript 等进行业务。失去java的类型安全性,降低软件质量。

不幸的是,混合使用另一种 JVM 语言的替代方案我认为不具有生产力。非常漂亮和强大的 Scala 仍然太狂野/复杂/棘手。

© www.soinside.com 2019 - 2024. All rights reserved.