Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
反射Java辅助_Java_Reflection_Retention - Fatal编程技术网

反射Java辅助

反射Java辅助,java,reflection,retention,Java,Reflection,Retention,我有一个反射的东西,它可以找到所有类,所有类都有一个名为@Song的注释和一个charge的名称。我如何将其放入org.alexwebber.songs中,找到所有带有@Song的类,并将它们的名称放入一个数组中?谢谢 new Reflections("org.alexwebber.musicMaker.songs").getTypesAnnotatedWith(Song.class); for ( Class<?> cls : new Reflections("org.al

我有一个反射的东西,它可以找到所有类,所有类都有一个名为@Song的注释和一个charge的名称。我如何将其放入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;
        }

下面的代码可能无法编译。。我在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()])

上面的代码有什么问题吗?我没有问题,我想要一个由所有类的字符串组成的数组,所有类都有@Song名称。