【发布时间】:2013-06-06 18:35:04
【问题描述】:
有没有什么方法可以基于 Java 中传递的字符串创建和返回对象?我想创建作为 Package 类的子类的对象,并通过调用传递类名的方法来做到这一点。我可以很容易地使用 switch 语句来完成此操作,但如果我这样做,当我添加更多 Packages 子类时,我不必调整 switch 语句。
这是我的代码:
包变量:
private Package testPackage;
方法调用:
createPackage(testPackage, "TestPackage");
以及方法:
Object createPackage(Object curPackage, String packageName)
{
Object object = null;
try
{
Class<?> aClass = Class.forName("a.b.c.packages." +packageName);
Constructor<?> constructor = aClass.getConstructor(new Class[] { String.class });
object = constructor.newInstance(new Object[] { packageName });
} catch (Exception e)
{
e.printStackTrace();
}
return object;
}
找到了类,但是在我运行这个方法并尝试调用之后
Log.v(TAG, testPackage.getName());
我得到一个空指针异常。我正在编写 Android 代码,但我认为这在这种情况下没有什么不同。
【问题讨论】:
-
"我想创建一个 Package 类的子类的对象,并通过调用传递类名的方法来做到这一点" sniff sniff 看起来像代码异味……你到底想做什么?
-
stackoverflow.com/questions/6094575/… 你可以在这里找到更好的参考。
-
我已经去过那个页面了。这就是我对代码的建模。
-
而且这不是代码异味,如果我能实现这个简短的方法会节省很多代码。
标签: java string object reflection