dans scala v 2.7.7
J'ai un fichier avec p> ceci lance l'erreur: p> classe quelque chose prend les paramètres de type Cependant, je ne peux pas faire cela P>
objet quelque chose étend autrementConstructeur [quelque chose] { p>
blockquote> object Something[T] extends OtherConstructor[Something[T]]
4 Réponses :
Un objet doit avoir un type concret. L'objet Scala Continent n'expose pas une exception à cette règle.
une définition valide est p> où t code> est un type
Vous pouvez utiliser:
object StringSomething extends OtherConstructor[Something[String]]
L'APT API est bien aussi: Liste Étend AnnotationMirror> GetannotationMirrors () Code> ( java.sun.com/javase/6/docs/api/javax/lang/model/element/... ) ;-)
Merci pour les réponses
object Something extends OtherConstructor[Something[_]]
Vous pouvez résoudre le problème général de la nécessité d'avoir besoin de objet foo [t] code> en déplaçant le paramètre type sur les méthodes de
Objet FOO code>:
class Other
class OtherConstructor[O <: Other] {
def apply(o: O): O = o // constructor 1 in base class
}
class Something[T](value: T) extends Other
class SomethingConstructor[T] extends OtherConstructor[Something[T]] {
def apply(o: T, s: String) = new Something[T](o) // constructor 2 in subclass
}
object Something {
def apply[T] = new SomethingConstructor[T] // the "constructor constructor" method
}
object demoX extends App {
val si = new Something(123)
val sd = new Something(1.23)
val si1: Something[Int] = Something[Int](si) // OtherConstructor.apply
val sd1: Something[Double] = Something[Double](1.23, "hello") // SomethingConstructor[Double].apply
}