反映* .class文件

时间:2012-08-17 13:02:06

标签: java reflection

如何从* .class文件中获取java.lang.Class?

我有一个文件夹whicj包含* .class文件。我需要将它们全部反映到java.lang.Class中。我已经阅读this回答并按照第一个选项中的说明进行了操作:

        URL[] classUrl = new URL[1];
        classUrl[0] = new URL("file:" + classFilesFolder);
        URLClassLoader ucl = new URLClassLoader(classUrl);
        Class c = ucl.loadClass("I DON'T KNOW CLASS NAMES HERE!");

问题是我不知道我正在反映的课程名称。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

如果classFilesFolder/home/user且文件夹中的文件名称为/home/user/com/something/My.class,则类名(包括包)将为com.something.My。因此,类名是完整的文件名,删除了classFilesFolder,然后将所有正斜杠更改为点,并在结尾删除.class

答案 1 :(得分:0)

您可以asm使用parse a class file,然后拨打getClassName()查找姓名。