Saa*_*aad 0 java oop inheritance
我有一个非常基本的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
}
Run Code Online (Sandbox Code Playgroud)
我必须创建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
}
Run Code Online (Sandbox Code Playgroud)
但上面看起来并不干净,因为用任何一个列表实例化的对象都不应该在其他List中有任何引用.
使用泛型:
public class Class1<TField3> {
private String field1;
private String field2;
private List<TField3> field3;
// constructors
}
Class1<String> stringObj = new Class1<>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |