gpt4 book ai didi

java - 好的泛型设计

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:56:06 24 4
gpt4 key购买 nike

我有一个设计问题。下面是时间戳接口(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>();

然后调用l.add(elem)将期待一个 TimeStamp<DefaultTimeStamp>这是错误的。

声明:public class TimeList<TimeStamp<T>> implements List<TimeStamp<T>>会给出编译时错误

我的 TimeList<Type> 的声明应该是什么? ?最终它只是一个只包含时间戳的列表

最佳答案

我不明白你为什么要这么做

TimeList<DefaultTimeStamp> l = new TimeList<DefaultTimeStamp>();

如果您希望能够添加任何类型的 TimeStamp<Long> .上述方式会强制用户使用 DefaultTimeStamp如果您有某些特定于实现的原因需要这样做……但显然通常不会。

TimeList<TimeStamp<Long>> l = new TimeList<TimeStamp<Long>>();
DefaultTimeStamp dts = new DefaultTimeStamp(System.currentTimeMillis());
l.add(dts);

应该工作得很好!

关于java - 好的泛型设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13264218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com