【问题标题】:How to generate getters en mass using aspectj如何使用 aspectj 大量生成 getter
【发布时间】:2015-06-30 11:09:42
【问题描述】:

我有以下问题,不知道有没有人知道解决办法:

我想使用 aspectj 或其他类似的字节码操作工具为某个类的每个子类中的每个私有字段动态生成特殊命名的 getter。

我希望 getter 的名称基于相应的字段名称,但我可以满足于使用一种方法获取字段名称字符串并返回一个值,只要不涉及反射即可。

【问题讨论】:

  • 您知道您可以在大多数 IDE 的源代码中自动执行此操作,对吧?

标签: java aspectj


【解决方案1】:

你看过Lombok吗?如果您可以访问源代码并且只是想节省输入,那么它的 @Data 注释可能就是您要查找的内容。

【讨论】:

    【解决方案2】:

    正如马特的回答,我建议你Lombok。 使用类级别的@Getter, @Setter注解,编译时会根据所有非静态字段的名称生成对应的getter/setter。

    使用 AspectJ 的 static crosscutting (page in the official documentation) 全局添加这些注释比手动注释类要好得多。

    在每个持久实体上声明@Getter 和@Setter 的示例:

    import javax.persistence.Entity;
    import lombok.Getter;
    import lombok.Setter;
    
    public aspect EntityAspect {
        declare @type: @Entity * : @Getter;
        declare @type: @Entity * : @Setter;
    }
    

    它要求您要么拥有源代码,要么在现有 jar 上使用 aspectj 编译(现有库的工具)。

    【讨论】:

    • 合并Lombok and AspectJ时请注意一些问题。我不知道他们现在是否解决了。
    猜你喜欢
    • 2015-01-15
    • 1970-01-01
    • 2012-10-19
    • 2019-03-29
    • 1970-01-01
    • 2015-05-23
    • 2020-06-21
    • 1970-01-01
    相关资源
    最近更新 更多