自从我上次用Java编写代码以来已经有两年了,所以我的编码技能有点生锈。
我需要在不同的数据结构数据(用户配置文件)保存,ArrayList并且LinkedList,他们都来自List。我想避免代码重复,我也想遵循良好的Java惯例。
为此,我试图创建一个抽象类,其中私有变量将是类型List,然后根据变量的类型创建2个子类。
问题是,我不知道我是否正确执行了此操作,您可以看一下我的代码:
类:DBList
import java.util.List;
public abstract class DBList {
private List listName;
private List listSSN;
public List getListName() {
return this.listName;
}
public List getListSSN() {
return this.listSSN;
}
public void setListName(List listName) {
this.listName = listName;
}
public void setListSSN(List listSSN) {
this.listSSN = listSSN;
}
}
类:DBListArray
import java.util.ArrayList;
public class DBListArray extends DBList {
public DBListArray() {
super.setListName(new ArrayList());
super.setListSSN(new ArrayList());
}
public DBListArray(ArrayList listName, ArrayList listSSN) {
super.setListName(listName);
super.setListSSN(listSSN);
}
public DBListArray(DBListArray dbListArray) {
super.setListName(dbListArray.getListName());
super.setListSSN(dbListArray.getListSSN());
}
}
类:DBListLinked
import java.util.LinkedList;
public class DBListLinked extends DBList {
public DBListLinked() {
super.setListName(new LinkedList());
super.setListSSN(new LinkedList());
}
public DBListLinked(LinkedList listName, LinkedList listSSN) {
super.setListName(listName);
super.setListSSN(listSSN);
}
public DBListLinked(DBListLinked dbListLinked) {
super.setListName(dbListLinked.getListName());
super.setListSSN(dbListLinked.getListSSN());
}
}
1) 这有什么意义吗?我究竟做错了什么?你有什么建议?
2)
对于我来说,在子类中DBList包含构造函数并调用它们(用super())会更有意义,但是我不能这样做,因为我无法使用初始化变量new
List()。
3)
人们一直认为我会尽可能进行深层复制,因此,我总是重写clone()类的方法并进行相应的编码。但是这些类从来没有任何列表,集合或映射,它们只有字符串,整数和浮点数。在这种情况下,我该如何做深拷贝?