![](/img/trans.png)
[英]Trying to get a Java function to return an array based on a string parameter passed to it
[英]Create and Return an Object Based on a Passed String
有什么方法可以基于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")
(您可以删除第一个未使用的参数)
因此,我相信您的问题是,您永远不会在方法中分配变量curPackage
(至少从我所编写的代码中可以看出)。 您需要分配您的testPackage,即:
private Package testPackage = (Package) createPackage("TestPackage");
此时,您可以删除Object参数,因为它从未在方法中使用过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.