在Scala中键入声明

时间:2012-11-11 11:14:24

标签: scala generics types

我需要创建一个基本上只包含时间戳的列表。以下是TimeStamp特征:

trait TimeStamp[T <: Comparable[T]] extends Comparable[TimeStamp[T]]
{
def getTimeStamp:T;
def compareTo(to:TimeStamp[T]) =this.getTimeStamp.compareTo(to.getTimeStamp) 
}

TimeStamp具有可比性。 getTimeStamp返回类型也具有可比性。例如,它可以是LongDate。上述特征的示例实现是:

class FileTimeStamp(file:File) extends TimeStamp[Date] 
{
  val time:Long = file.lastModified();
  val date:Date = new Date(time);
  override def getTimeStamp:Date = date;
  def getFile:File = file;
}

现在问题是我希望有一个名为TimeList的类,没有参数。它只能在列表中添加TimeStamps

class TimeList[T] extends ArrayList[TimeStamp[????]]

上面的????应该是什么。理想情况下,我想要[T <: Comparable[T]]之类的东西。即LongDateTimeStamp类型的任何内容。

1 个答案:

答案 0 :(得分:3)

class TimeList[T <: Comparable[T]] extends ArrayList[TimeStamp[T]]

编辑:鉴于你的评论,你可以做到

class TimeList[T <: TimeStamp[_]] extends ArrayList[T]

但这种类型将更难使用。