【问题标题】:Reflection Java assistance反射 Java 帮助
【发布时间】:2015-02-22 22:09:06
【问题描述】:

我有一个反射的东西,它会找到所有带有 @Song 注释和电荷名称的类。我如何让它进入 org.alexwebber.songs 并找到所有带有 @Song 的类并将它们的所有名称放入一个数组中?谢谢!

new Reflections("org.alexwebber.musicMaker.songs").getTypesAnnotatedWith(Song.class);
    for ( Class<?> cls : new Reflections("org.alexwebber.musicMaker.songs").getTypesAnnotatedWith(Song.class) ) {
        Song annotation = (Song) cls.getDeclaredAnnotation(Song.class);
        if ( annotation != null && annotation.Name().equals("Charge")) {
            @SuppressWarnings("unused")
            Object song = cls.getConstructor().newInstance();
            break;
        }

【问题讨论】:

  • 上述代码遇到了什么问题?
  • 我没有问题,我想要一个由所有具有@Song 名称的类的字符串组成的数组。

标签: java reflection retention


【解决方案1】:

下面的代码可能无法编译..我在 github 上输入了它..这是你要找的吗?您已经完成了大部分工作。如果您正在寻找其他内容,请更新问题..

Set<Class<?>> classes=new Reflections("pkg prefix").getTypesAnnotatedWith(Song.class)
List<String> chargeNames=new ArrayList()<>;
for(Class<?> clz:classes){
    Song annotation = (Song) cls.getDeclaredAnnotation(Song.class);
    if(annotation!=null) chargeNames.add(annotation.Name());
}

String[] chargenamesar= chargeNames.toArray(new String[chargeNames.size()])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多