Je dois créer une classe qui est essentiellement une liste contenant uniquement des horodatages. Ci-dessous le trait TimeStamp
:Déclaration de type dans Scala
trait TimeStamp[T <: Comparable[T]] extends Comparable[TimeStamp[T]]
{
def getTimeStamp:T;
def compareTo(to:TimeStamp[T]) =this.getTimeStamp.compareTo(to.getTimeStamp)
}
TimeStamp
est comparable. Et le type de retour getTimeStamp
est également comparable. Il peut être Long
ou Date
par exemple. Un exemple d'implémentation de trait ci-dessus est:
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;
}
Maintenant la question est que je veux avoir une classe appelée TimeList
sans paramètre. Il ne peut prendre que TimeStamps
à ajouter dans la liste. Ce qui devrait être mon ????
ci-dessus. Idéalement, je voudrais quelque chose comme [T <: Comparable[T]]
. c'est-à-dire Long
ou Date
ou quel que soit le type TimeStamp
.
le 'T' sur' TimeList' est faux? – sschaef
C'est la question :) fondamentalement comment devrait être ma déclaration de classe de TiemList. – Jatin
Si vous réduisez la limite 'T' à' Comparable [T] 'votre code fonctionne correctement. Qu'est-ce que vous n'aimez pas dans cette solution? – sschaef