【发布时间】:2011-02-21 10:50:30
【问题描述】:
假设我们有 2 个类 A 和 B
public class A{
private int member1;
A() {
member1 = 10;
}
public getMember(){
return member1;
}
}
除了它的成员变量被命名为 member2 并且在构造函数中被初始化为 20 之外,B 类也在同一行中。
我的要求:
在运行时,我得到一个包含类名(可以是 A 或 B)的字符串。我想在调用构造函数的同时动态创建这个类的一个对象。我怎样才能做到这一点。我不想将接口用于上述类的通用功能此外,稍后我使用基于列列表的 Propery Builder Bean Util 类设置此原始对象的属性。
Class clazz = Class.forName("className");
Obj obj = clazz.newInstance();
如何将该 obj 动态转换为 className 对象。
【问题讨论】:
-
您好,我稍微编辑了您的问题以更好地格式化您的 Java 代码。据我所知,如果您选择 StackOverflow 代码并单击“10010001”图标,将所有代码向右移动(然后格式化)而不是使用 xml
标记,它看起来会更好。 -
你不能这样做,但你可以有第三个类,比如 Common(类或 Java 接口),然后有 A extends Common 和 B 扩展 Common 或 A 实现 Common 和 B 实现 Common 并将通用功能放在“Common”类/接口中。从您的问题来看,似乎有共享的通用功能......
-
我不想要一个接口,因为这里的 Type T 类在其行为上的领域分类有很大不同。以上只是一个示例功能,可让您了解我要完成的工作,并不代表我的代码的正确状态。现在呢?