我有一个非常基本的OOP问题。我有两个课程如下
public class Class1 {
private String field1;
private String field2;
private List<String> field3;
// constructors
}
public class Class2 {
private String field1;
private String field2;
private List<Object1> field3;
// constructors
}
我必须创建class2的唯一原因是因为class1中的List可以是字符串列表或Object2列表。有没有办法摆脱Class2,并使field3表现为String的列表,也作为Object2的列表。
我知道我可以做类似
的事情public class Class1 {
private String field1;
private String field2;
private List<String> field3;
private List<Object1> field4;
// constructors which are initializing null to either field 3 or field 4
}
但是上面看起来并不干净,因为用任何一个列表实例化的对象都不应该在其他List中有任何引用。
答案 0 :(得分:5)
使用generics:
public class Class1<TField3> {
private String field1;
private String field2;
private List<TField3> field3;
// constructors
}
Class1<String> stringObj = new Class1<>();