2016-06-29 20 views
2

ich nach einem Weg suchen, eine Liste von Objekten in der Datenbank mit ORMLite zu speichern und auf diese Frage zu lesen: Best way to store several ArrayLists in ORMLite for ApplicationSettingsSpeichern einer Liste von Objekten zu ORMLite Datenbank

Und die akzeptierte Antwort macht Sinn für mich:

public class YourClass { 
    @GeneratedId 
    private int id; 

    @ForeignCollectionField 
    private Collection<MyString> bunchOfStrings = new ArrayList<MyString>(); 
} 

public class MyString{ 
    @DatabaseField(canBeNull = true, foreign = true) 
    private YourClass yourClass; 

    @DatabaseField 
    private String text; 
} 

Und das einzige, was ich nicht verstehe, ist diese Linie private Collection<MyString> bunchOfStrings = new ArrayList<MyString>(). Warum speichern wir die ForeignCollectionField als Collection<MyString> anstatt als ArrayList<MyString>? Wenn wir mit dem obigen Objekt bunchOfStrings arbeiten, müssen wir es immer in ArrayList<MyString> umwandeln?

Antwort

2

Warum speichern wir das ForeignCollectionField als Collection anstelle von ArrayList?

Das war Gestaltungsüberlegung, Auszug aus doc

The field type of orders must be either ForeignCollection<T> or Collection<T> – no other 
collections are supported because they are much heavier with many methods to support 

Wenn mit den bunchOfStrings Arbeitsobjekt oben, tun wir es immer

Sie müssen nicht auf Arraylist müssen werfen Um dieses Feld zu initialisieren, wird Ormlite das tun. Daher sind nur verfügbare Methoden verfügbar, die in Collection oder ForeignCollection

vorhanden sind