1

我有一个反射的东西,它会找到所有带有 @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;
        }
4

1 回答 1

0

下面的代码可能无法编译..我在 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()])
于 2015-02-23T22:35:27.730 回答