如何重构这个简单的类字段

时间:2018-03-19 17:31:10

标签: 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 
}

我必须创建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中有任何引用。

1 个答案:

答案 0 :(得分:5)

使用generics

public class Class1<TField3> {
    private String field1;
    private String field2;
    private List<TField3> field3; 
    // constructors 
}

Class1<String> stringObj = new Class1<>();