所以我试图与我拥有的一些遗留代码进行交互。以下是我尝试使用的课程的基本结构:
public class InterfaceFactory
{
public static Class<? extends ParentClass> newClassObject;
public static ParentClass newKidClassMaker()
{
ParentClass x = newClassObject();
return x;
}
}
所以在使用这个newKidClassMaker()方法之前,我必须为newClassObject分配一个实际的类类型。这就是让我难过的原因。我昨天到了互联网的尽头寻找答案。我期待的是:
InterfaceFactory.newClassObject = new theClassDefinitionItNeedsToBe();
我在python中使用了这个类。它看起来像
InterfaceFactory.newClassObject = theClassDefinitionItNeedsToBe
其中classDefinitionItNeedsToBe不是静态类,但确实扩展了ParentClass。 java的解释是我真正摸不着头脑的。任何帮助都会非常感激。
答案 0 :(得分:0)
您有一个成员变量newClassObject
。您不能将其称为方法,如下所示:
// newClassObject is a variable, you can't call a variable using ...();
ParentClass x = newClassObject();
由于它是类java.lang.Class
的一个实例,您可以在其上调用java.lang.Class
的方法;例如,创建一个新实例:
ParentClass x = newClassObject.newInstance();
您可以像这样初始化newClassObject
:
InterfaceFactory.newClassObject = SomeClassThatExtendsParentClass.class;
或者,如果您在编译时不了解该类,则可以动态地执行该操作(例如,名称字符串可以来自配置文件):
String className = "com.mypackage.SomeClassName";
InterfaceFactory.newClassObject =
(Class<? extends ParentClass>) Class.forName(className);