如何使用泛型在Java类中定义类引用?
如何使用Java定义以下类设计如何使用泛型在Java类中定义类引用?,java,oop,generics,Java,Oop,Generics,如何使用Java定义以下类设计 class Test { private ClassA classA; **Placeholder for class reference** } 在上面的占位符中,我想传递ClassB或ClassC的实例。如何声明变量 class ClassB { List<ClassD> classDList; } class ClassC { List<ClassE> classEList; }
class Test
{
private ClassA classA;
**Placeholder for class reference**
}
在上面的占位符中,我想传递ClassB或ClassC的实例。如何声明变量
class ClassB
{
List<ClassD> classDList;
}
class ClassC
{
List<ClassE> classEList;
}
class ClassD
{
String string;
List<ClassE> classEList;
}
class ClassE
{
String string;
List<ValueObject> valueObjectList;
}
B类
{
列表类列表;
}
C类
{
列表类列表;
}
D类
{
字符串字符串;
列表类列表;
}
阶级
{
字符串字符串;
清单价值对象清单;
}
请告诉我是否有其他更好的解决方案用于上述设计。不完全清楚您所说的“作为普通类型”是什么意思,但是:如果
ClassCB
和ClassDB
都扩展ClassB
,然后ClassCB
或ClassDB
的实例可分配给ClassB
类型的变量
class ClassB {}
class ClassCB extends ClassB {}
class ClassDB extends ClassB {}
泛型似乎与这个问题无关。类测试
class Test<A,B>
{
private A classA;
// A common type for ClassCB and ClassDB
private B classB;
}
{
私人A级;
//ClassCB和ClassDB的通用类型
私人乙类;;
}
让ClassCB和ClassDB扩展ClassB?为什么需要这样做?如果ClassCB
和ClassDB
没有共同之处,那么为什么要互换使用它们呢?Java没有不相交的并集类型。因此,除非ClassB和ClassC有一个共同的超类型(接口?),否则不能这样做。但是,许多库都有other
类型,所以use可以使用:other