java-如何从不完整的类名获取实例对象?

世界!我需要从其类的名称实例化一个对象.我知道这样可以做到

MyObject myObject = null;
try {
    Constructor constructor = Class.forName( "fully.qualified.class.name"  ).getConstructor(); // Get the constructor without parameters
    myObject = (MyObject) constructor.newInstance();
} catch (Exception e) {
    e.printStackTrace();
}       

问题是我的班级名称不完全合格.有一种只知道短名称就可以得到全名的方法吗?

解决方法:

MyObject myObject = null;
for (Package p : Package.getPackages()) {
    try {
        myObject = Class.forName(p.getName() + "." + className).newInstance();
        break;
    } catch (ClassNotFoundException ex) {
        // ignore
    } 
}

Package.getPackages()调用将为您提供当前类ClassLoader及其祖先已知的每个软件包.

警告:这将很昂贵,因为您反复抛出和捕获异常.通过测试可以加快速度:

this.getClass().getClassLoader().findResource(binaryClassName) != null

在调用Class.forName(…)或等效名称之前.

上一篇:javascript-如何覆盖String的length属性


下一篇:染色(贪心+堆)