デザインの質問があります。以下はTimeStampインターフェースです
/**
* <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
、TimeStamps のみを含むクラスが必要です。リストに何かを追加するかどうかは、基本的にタイムスタンプに依存します。私の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>();
次に、への任意の呼び出しは、間違っているl.add(elem)
a を期待します。TimeStamp<DefaultTimeStamp>
の宣言:public class TimeList<TimeStamp<T>> implements List<TimeStamp<T>>
コンパイル時エラーが発生します
私の宣言は何TimeList<Type>
ですか?最終的には、タイムスタンプのみを含む単なるリストです