Ich habe eine Designfrage. Im Folgenden finden Sie Timestamp-SchnittstelleGutes Design in Generics
/**
* <T> Type of Timestamp. For ex: Date, long, Calendar etc
*
*/
public interface TimeStamp<T> extends Comparable<TimeStamp<T>>
{
/**
* Returns the timestamp.
* @return
*/
public T getTimeStamp();
}
ich im Grunde eine List
Klasse haben wollen, die nur Timestamps enthalten. Das Hinzufügen von Elementen auf der Liste hängt im Wesentlichen vom Zeitstempel ab. Wie sollte meine List-Klasse-Deklaration sein?
Wenn ich für Komposition entscheiden, wird der Code wie folgt aussehen:
public class TimeList<T> implements List<TimeStamp<T>>
{
private List<TimeStamp<?>> list = new ArrayList<TimeStamp<?>>();
//other list methods who will return based on list above
.....
}
Aber die oben ist nicht sinnvoll. Zum Beispiel, wenn ich eine Klasse DefaultTimeStamp implments TimeStamp<Long>
und instanziiert TimeList als
TimeList<DefaultTimeStamp> l = new TimeList<DefaultTimeStamp>();
Dann Anycall zu l.add(elem)
ein TimeStamp<DefaultTimeStamp>
erwarten, die falsch ist.
Eine Erklärung: public class TimeList<TimeStamp<T>> implements List<TimeStamp<T>>
würde
TimeList<Type>
sein sollte? Letztlich ist es nur eine Liste nur Timestamps
Da Liste nichts Hinzufügen auf seine Zeitmarke abhängen . – Jatin
soll TimeList TimeStamp für bestimmte T von für irgendein T enthalten? –
Ja. Das ist für Berechnungen erforderlich – Jatin