如何将类类型分配给通配符类定义(java)

时间:2015-02-04 14:56:06

标签: java wildcard

所以我试图与我拥有的一些遗留代码进行交互。以下是我尝试使用的课程的基本结构:

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的解释是我真正摸不着头脑的。任何帮助都会非常感激。

1 个答案:

答案 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);