我有一个设计问题.下面是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();
}
Run Code Online (Sandbox Code Playgroud)
我基本上想要一个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
.....
}
Run Code Online (Sandbox Code Playgroud)
但上述内容没有意义.例如,如果我有一个类DefaultTimeStamp implments TimeStamp<Long>并将TimeList实例化为
TimeList<DefaultTimeStamp> l = new TimeList<DefaultTimeStamp>();
Run Code Online (Sandbox Code Playgroud)
然后任何电话l.add(elem)都会期待TimeStamp<DefaultTimeStamp>哪个是错的.
声明:public class TimeList<TimeStamp<T>> implements List<TimeStamp<T>>会给编译时错误
什么应该是我的声明TimeList<Type>?最终它只是一个只包含TimeStamps的列表
我不明白你为什么想做
TimeList<DefaultTimeStamp> l = new TimeList<DefaultTimeStamp>();
Run Code Online (Sandbox Code Playgroud)
如果您希望能够添加任何类型的TimeStamp<Long>. 如果您有某些特定于实现的原因这样做,上述方法将强制用户使用DefaultTimeStamp......但显然通常不会。
TimeList<TimeStamp<Long>> l = new TimeList<TimeStamp<Long>>();
DefaultTimeStamp dts = new DefaultTimeStamp(System.currentTimeMillis());
l.add(dts);
Run Code Online (Sandbox Code Playgroud)
应该可以正常工作!
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |