我有一個設計問題。下面是時間戳Interface良好的泛型設計
/**
* <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();
}
我基本上是想有一個List
類只能包含時間戳。在列表中添加任何內容將基本取決於時間戳。我的List類聲明應該如何。
如果我決定組成,代碼如下:
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
.....
}
但上面沒有任何意義。例如,如果我有一個類DefaultTimeStamp implments TimeStamp<Long>
和實例TimeList作爲
TimeList<DefaultTimeStamp> l = new TimeList<DefaultTimeStamp>();
然後ANYCALL到l.add(elem)
將期待一個TimeStamp<DefaultTimeStamp>
這是錯誤的。
的聲明:public class TimeList<TimeStamp<T>> implements List<TimeStamp<T>>
會給編譯時錯誤
應該是什麼我TimeList<Type>
的聲明?最終它只是只包含時間戳
因爲添加任何東西名單將取決於它的時間戳。 – Jatin
你是否希望TimeList包含TimeStamp對於任何T的特定T? –
是的。這是計算所需的 – Jatin