我有一个Interface IExample和一些实现此接口的类。接下来,我有一个包含其中一些类的列表,如
List<Class> classes = new List();
classes.add(Class1)
classes.add(Class2)
/...
Class1
和Class2
都实现了IExample。稍后在运行时我有一个变量,其中包含classes
列表的一个类:Class specialClass = Class2 //Class2 chosen randomly
。
我现在要做的是创建此specialClass
的新实例,如
IExample myNewInstance = specialClass.newInstance(...)
我可以实现所有给定类的构造函数和静态方法(如果有帮助)。但是,我如何强制实现接口IExample
的每个类实现特定的构造函数或具有指定签名的静态方法(也将解决此问题)。
因为如果我不能这样做,我必须这样做:
switch(specialClass) {
case Class1:
//do some work with constructor of Class1
case Class2:
//do some work with constructor of Class2
//and so on
}
这意味着,在添加新课程时,我不仅需要编写新的ClassX
,将其添加到classes
列表中,我很好,还需要添加新案例到switch语句。我想避免这种情况。
我该怎么做或者我的问题是否意味着一些普遍的误解?