我有一个涉及类的签名:“Lorg/demo/framework/FigureEnumeration;”。
我的问题是,有没有办法通过签名来获取类或类的实例?因为我想检查这个类是否是Interface,加上我从一个字段中得到这个签名,我的意思是一个字段的类型是“FigureEnumeration”,所以我使用BcelField类来获取签名。
我希望我的问题对每个人都很清楚。
提前致谢!
我有一个涉及类的签名:“Lorg/demo/framework/FigureEnumeration;”。
我的问题是,有没有办法通过签名来获取类或类的实例?因为我想检查这个类是否是Interface,加上我从一个字段中得到这个签名,我的意思是一个字段的类型是“FigureEnumeration”,所以我使用BcelField类来获取签名。
我希望我的问题对每个人都很清楚。
提前致谢!
看一下Class.forName
,来自 JavaDocs:
例如,以下代码片段返回
Class
名为 的类的运行时描述符java.lang.Thread
:
Class t = Class.forName("java.lang.Thread")
鉴于:
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);