如何在注释旁边提供注释阅读的实现

时间:2018-11-10 18:41:47

标签: java annotations

假设我有一个像这样使用的注释:

public void foo (@IntParam int quantity, @FooParam Foo bar) {
  ...
}

我想调用此方法,从对象访问参数并像这样传递它:

public void invokeFoo (Method fooMethod, Map<String, String> context) throws ... {
  List<Object> params = Arrays.stream(fooMethod.getAnnotations()).map(annos -> {
     if (annos[0] instanceof IntParam) {
       return context.get( ... ); // <-
     } else if (annos[0] instanceof FooParam) {
       return new Foo(context); // <-
     }
  }).collect(Collectors.toList());
  fooMethod.invoke(params.toArray());
}

这种困难的问题是,如果要添加新类型的参数,我需要编辑2个不同的文件,出于多种原因,我希望避免这种情况。有没有一种方法可以在相同的注释文件?。唯一的方法是在接口上使用静态/默认方法,但是这两种方法键入的效果都会很差。

还有其他方法吗?

0 个答案:

没有答案