【发布时间】:2015-06-30 11:09:42
【问题描述】:
我有以下问题,不知道有没有人知道解决办法:
我想使用 aspectj 或其他类似的字节码操作工具为某个类的每个子类中的每个私有字段动态生成特殊命名的 getter。
我希望 getter 的名称基于相应的字段名称,但我可以满足于使用一种方法获取字段名称字符串并返回一个值,只要不涉及反射即可。
【问题讨论】:
-
您知道您可以在大多数 IDE 的源代码中自动执行此操作,对吧?
我有以下问题,不知道有没有人知道解决办法:
我想使用 aspectj 或其他类似的字节码操作工具为某个类的每个子类中的每个私有字段动态生成特殊命名的 getter。
我希望 getter 的名称基于相应的字段名称,但我可以满足于使用一种方法获取字段名称字符串并返回一个值,只要不涉及反射即可。
【问题讨论】:
正如马特的回答,我建议你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 编译(现有库的工具)。
【讨论】: