Java 如何在带注释的类上生成方法?
我想学习并享受注释带来的乐趣。下面是我的用例:我有一堆基本上具有相同角色的类:根据regex(1方法)验证视频URL,并返回相应的嵌入式HTML(另一种方法) 问题是验证方法总是一样的。我当然可以使用继承,但我想知道是否可以创建如下注释:Java 如何在带注释的类上生成方法?,java,annotations,processor,Java,Annotations,Processor,我想学习并享受注释带来的乐趣。下面是我的用例:我有一堆基本上具有相同角色的类:根据regex(1方法)验证视频URL,并返回相应的嵌入式HTML(另一种方法) 问题是验证方法总是一样的。我当然可以使用继承,但我想知道是否可以创建如下注释: @Target(ElementType.TYPE) @Retention(RetentionPolicy.??) @Inherited @Documented public @interface VideoProvider { String r
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.??)
@Inherited
@Documented
public @interface VideoProvider {
String regex();
int group() default 1;
}
这样处理:
//processor class
public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {
for (TypeElement annotation : annotations) {
for (Element e : roundEnv.getElementsAnnotatedWith(annotation)) {
if (e.getKind().isClass()) {
//?????
}
}
}
return false;
}
//处理器类
公共布尔过程(Set看看如何使用java的类和cglib类。这两种解决方案都允许您代理一个类并接管任何方法。我认为您做得不对---
但是,如果您真的想在编译时通过注释处理来实现这一点,您应该查看
这专门用于向编译过程添加注释驱动的扩展,以执行自动添加方法之类的操作。您可以向类添加方法(许多框架都会这样做)。检查如何进行字节码操作这是一个使用注释的人为示例,当抽象类有更好的惯用方法时。我会找到一个更合适的问题来解决注释。是的,你是对的。我只是想学习如何使用它,但用例确实不够。哼嗯,如果你能更准确地告诉我哪里出了问题,我会很高兴:)@Rolf——我认为你不需要在编译时添加方法——我认为一个普通的继承或静态方法可以在运行时使用注释数据来做你需要的事情。这可能是因为我低估了问题的复杂性。基本上,我只需要使用一个公共接口或父类,并在那里定义验证方法,而不需要任何注释。关于使用注释数据的静态方法,这不正是注释处理器应该做的吗?只是我不知道如何完成代码来访问类并在其中添加方法。。。顺便说一句,“编译时间”绝对不是义务。谢谢链接。但是,我无法理解如何获取代理实例所需的调用处理程序。