我创建了自己的注释类型,如下所示:
public @interface NewAnnotationType {}
并将其附加到一个类上:
@NewAnnotationType
public class NewClass {
public void DoSomething() {}
}
我试图通过反射来获得类注释,如下所示:
Class newClass = NewClass.class;
for (Annotation annotation : newClass.getDeclaredAnnotations()) {
System.out.println(annotation.toString());
}
但它没有打印任何内容。我究竟做错了什么?
默认的保留策略是RetentionPolicy.CLASS
,默认情况下,注释信息在运行时不保留:
批注由编译器记录在类文件中,但VM在运行时无需保留。这是默认行为。
而是使用RetentionPolicy.RUNTIME
:
注释将由编译器记录在类文件中,并在运行时由VM保留,因此可以通过反射方式读取它们。
…您使用@Retention
meta注释指定:
@Retention(RetentionPolicy.RUNTIME)
public @interface NewAnnotationType {
}
考虑下面的代码: 使用用于注释处理的最新JDK8 API,如何访问注释列表(@JSON,@freezed) 我尝试过很多技巧,比如
问题内容: 我试图在另一个问题中从Spark库调用。并且,它要求两个参数,一个文字对象,它的类型(A )。 第一个论点,我可以提出自己(我认为)。但是对于第二个对象,我不知道如何为它实例化一个对象。我正在尝试通过作为第二个参数。 有人可以告诉我如何在 Java中* 创建for 吗?这是我要完成的代码: * 问题答案: 在另一个问题中,我说 并从Java提供CanBuildFrom自变量在技术上是可
我运行自己编写的注释处理器,根据注释类生成一些新的java代码。下面是我试图获取当前处理的类的超级类名的内容。 typeElement返回注释处理器正在处理的当前类。我想知道这个扩展了哪些类,哪些类是由这个类实现的。我使用的方法一点帮助都没有。 感恩节
问题内容: 如果我有这样的方法: 如何同时获取@LinkLength和@LinkRange批注? 问题答案: 我假设您想反射地访问这些注释。这是一个例子: 输出以下内容: 以下是使用的方法: 只会得到一个公共方法。要获取非公开方法,请参见。 从延伸。 ,和和(和其他类型)全部继承。 上面的示例充分利用了有关该方法的知识。换句话说,我知道有一个参数,知道会返回,而且我知道参数化类型有一个类型实参。反
我有一门课,比如下面的测试 有一个C1班 我给这门课打电话如下 当我调试时,我将i1设置为null。 请告知我做错了什么 注意:。我必须在xyx()中使用类Test,因为它是伪代码,并且xyx()中有很多代码
作为我的一个要求,我创建了一个包含多个方法的inteface,每个方法都用我自己的java自定义注释进行了注释。我的实现类有一个spring aop方面,但我无法获得aop方面的自定义注释。在进行调试后,我明白了我的自定义注释是接口的一部分,而不是在实现类中。