java - java中获取泛型接口(interface)的注解值

标签 java generics annotations

我正在尝试获取注释值。这是我的场景如下:

这是我声明的注释。

@Retention(RetentionPolicy.RUNTIME)
 public @interface PluginMessage {
 String name();
 String version();
}

这是对某些值使用注释的类

@PluginMessage(name = "RandomName", version = "1")
public class Response{
 private Date Time;
}

这是一个通用接口(interface),将在下一个代码片段中使用。

public interface ResponseListener<E> {
  void onReceive(E response);
}

我通过调用以下代码来调用它:

  addListener(new ResponseListener<Response>() {
      @Override
      public void onReceive(Response response) {
        System.out.println();
      }
  });

这是addListener方法的实现:

public <E> void addListener(ResponseListener<E> responseListener) {
    Annotation[] annotations = responseListener.getClass().getAnnotations();

}

注释总是空的,知道我做错了什么吗?我试图在这里了解它们的值(value)。

最佳答案

您可以在这里获得注释:

.addListener(new ResponseListener<Response>() {
        public void onReceive(Response response) {
            final Annotation[] annotations = response.getClass().getAnnotations();
            for (Annotation annotation : annotations) {
                System.out.println("annotation.toString() = " + annotation.toString());
            }
        }
    });

您的.addListener实现毫无意义。您必须将监听器添加到监听器池中,而不是从 ResponseListener(没有注释)实例获取注释。然后,当您收到响应时,必须为每个监听器调用listener.onReceive(...)。我相信类似的事情应该在那里实现。

关于java - java中获取泛型接口(interface)的注解值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36273394/

相关文章:

java - 是否有用于向文件中添加额外信息的任何 Java 注释?

java - 将多个项目(maven2)导入到eclipse中

java - 接口(interface)与泛型?

java - 计算每个开发人员的 Java @author 注释

TypeScript 条件通用接口(interface)作为参数(数组或对象,基于 bool 值)

generics - F#编译错误: Unexpected type application

android - 如何在 Android 中删除 nullable 的警告?

java - 创建一个空的 CD-ROM 镜像并使用 Java 将文件注入(inject)其中或从中提取文件

java - 有没有更好的方法来处理 Java 中的进程,而不是解析任务列表并发送 "kill"信号?

java - 我应该在哪里放置 Scanner.close(); ?