有什么方法可以在 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 代码,但我认为这对这种情况没有影响。
最佳答案
你有一个 NullPointerException 因为你没有初始化 testPackage
。
你必须转换结果:
testPackage = (Package)createPackage("TestPackage")
(并且可以去掉第一个参数,没有用到)
关于java - 基于传递的字符串创建和返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16969599/