在 Java 中动态创建对象
有没有(更好的)方法来动态创建对象?
现在我正在使用一个简单的“工厂模式”解决方案,如下所示:
String classType = generalObject.getClass().toString();
if(classType.equals("class be.testApp.UserObject")) {
return UserObject.fromByteArray(data);
//return new UserObject();
}
else if(classType.equals("class.be.testApp.NewsObject")) {
return NewsObject.fromByteArray(data);
//return new NewsObject();
}
Is there a (better) way to dynamically create Objects?
Right now I'm using a simple 'factory pattern' solution as following:
String classType = generalObject.getClass().toString();
if(classType.equals("class be.testApp.UserObject")) {
return UserObject.fromByteArray(data);
//return new UserObject();
}
else if(classType.equals("class.be.testApp.NewsObject")) {
return NewsObject.fromByteArray(data);
//return new NewsObject();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这段代码不是工厂模式,也没有创建任何对象。您计算类名并调用类上的静态方法。
现在看起来您有一个对象 (
generalObject
) 并且想要创建一个完全相同类型的新实例。 如果所有可能的类型都有一个公共默认构造函数(约定!),那么您可以使用它基于给定对象创建一个新实例:(但也许我仍然不明白您的想法.. .)
This code is not a factory pattern and no object is created. You evaluate the class name and call a static method on a class.
Now it looks like you have an object (
generalObject
) and want to create a new instance of the very same type. If all possible types have a public default constructor (convention!), then you can use this to create a new instance based on the given object:(but maybe I still didn't get your idea...)
你可以在这里使用反射,类似
应该做的事情。
You could use reflection here, something like
should do.
这是非常复杂的。由于显然这两个类都在您的编译类路径上,因此只需使用类对象,而不是它们的字符串表示形式:
This is very complicated. Since apparently both classes are on your compile classpath, just use the class objects, not their string representations: