2012-11-11 143 views
0

我需要創建一個基本上只包含時間戳列表的類。下面是TimeStamp特點:Scala中的類型聲明

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]]。即LongDate或任何TimeStamp類型。

+0

'TimeList'上的'T'是錯的? – sschaef

+0

這就是問題:)基本上應該是我的TiemList類的聲明。 – Jatin

+0

如果你將'T'降到'Comparable [T]'你的代碼工作正常。這個解決方案你不喜歡什麼? – sschaef

回答

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

編輯:鑑於你的評論,你可以做

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

但這種類型將是很難使用。

+0

然後我需要提及類型。我想要用戶寫入val j:TimeList [FileTimeStamp]而不是val j:TimeList [Date]。通過上述解決方案,我將不得不將其聲明爲TimeList [Date] – Jatin