Hilfe mit abstrakter Klasse in Java mit privater Variable vom Typ Liste <E>

Es ist zwei Jahre her, dass ich zuletzt etwas in Java codiert habe, daher sind meine Codierungsfähigkeiten etwas verrostet.

Ich muss Daten (ein Benutzerprofil) in verschiedenen Datenstrukturen speichern,ArrayList undLinkedList, und beide kommen vonList. Ich möchte vermeiden, dass Code dupliziert wird, wo ich kann, und ich möchte auch gute Java-Praktiken befolgen.

Dafür versuche ich, eine abstrakte Klasse zu erstellen, in der die privaten Variablen vom Typ @ sinList<E> und dann je nach Variablentyp 2 Unterklassen erstellen.

Das ist, ich weiß nicht, ob ich das richtig mache, du kannst dir meinen Code ansehen:

Class: DBList

import java.util.List;

public abstract class DBList {

    private List<UserProfile> listName;
    private List<UserProfile> listSSN;

    public List<UserProfile> getListName() {
    return this.listName;
    }

    public List<UserProfile> getListSSN() {
    return this.listSSN;
    }

    public void setListName(List<UserProfile> listName) {
    this.listName = listName;
    }

    public void setListSSN(List<UserProfile> listSSN) {
    this.listSSN = listSSN;
    }

}

Class: DBListArray

import java.util.ArrayList;

public class DBListArray extends DBList {

    public DBListArray() {
    super.setListName(new ArrayList<UserProfile>());
    super.setListSSN(new ArrayList<UserProfile>());
    }

    public DBListArray(ArrayList<UserProfile> listName, ArrayList<UserProfile> listSSN) {
    super.setListName(listName);
    super.setListSSN(listSSN);
    }

    public DBListArray(DBListArray dbListArray) {
    super.setListName(dbListArray.getListName());
    super.setListSSN(dbListArray.getListSSN());
    }

}

Class: DBListLinked

import java.util.LinkedList;

public class DBListLinked extends DBList {

    public DBListLinked() {
    super.setListName(new LinkedList<UserProfile>());
    super.setListSSN(new LinkedList<UserProfile>());
    }

    public DBListLinked(LinkedList<UserProfile> listName, LinkedList<UserProfile> listSSN) {
    super.setListName(listName);
    super.setListSSN(listSSN);
    }

    public DBListLinked(DBListLinked dbListLinked) {
    super.setListName(dbListLinked.getListName());
    super.setListSSN(dbListLinked.getListSSN());
    }

}

1) Ergibt das irgendeinen Sinn? Was mache ich falsch? Hast du irgendwelche Empfehlungen?

2) Es wäre sinnvoller für mich, die Konstruktoren in @ zu habDBList und sie anrufen (mitsuper()) in den Unterklassen, aber ich kann das nicht tun, weil ich eine Variable nicht mit @ initialisieren kanew List<E>().

3 Es wurde gedacht, dass ich tiefe Kopien mache, wann immer es möglich ist und dafür überschreibe ich immer dasclone() Methode meiner Klassen und codieren Sie es entsprechend. Aber diese Klassen hatten nie Listen, Sets oder Maps, sie hatten nur Strings, Ints, Floats. Wie mache ich tiefe Kopien in dieser Situation?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage