0

我有一个涉及类的签名:“Lorg/demo/framework/FigureEnumeration;”。

我的问题是,有没有办法通过签名来获取类或类的实例?因为我想检查这个类是否是Interface,加上我从一个字段中得到这个签名,我的意思是一个字段的类型是“FigureEnumeration”,所以我使用BcelField类来获取签名。

我希望我的问题对每个人都很清楚。

提前致谢!

4

2 回答 2

0

看一下Class.forName,来自 JavaDocs:

例如,以下代码片段返回Class名为 的类的运行时描述符 java.lang.Thread

Class t = Class.forName("java.lang.Thread")

于 2013-11-13T16:07:45.787 回答
0

鉴于:

String className = "Lorg/demo/framework/FigureEnumeration;";

您应该首先清理名称:

// remove beginning chars that aren't a lowercased alpha char
// /!\ class must be in a package
className = className.replaceFirst("^[^a-z]+", "");
// remove ending chars that aren't an alpha char
className = className.replaceFirst("[^a-zA-Z]+$", "");
// replace any slash by a dot
className = className.replaceAll("/", ".");

然后,使用反射:

Class<?> clazz = Class.forName(className);
于 2013-11-13T16:08:55.917 回答