我想定义一个返回Class对象的工厂方法,例如用于创建gui对象。
我定义了一个类似
的方法def getWorkerClass2[T <: Component]():Class[T] = {return classOf[Frame]; }
返回Component-Class的子类,但scala编译器抱怨
type mismatch;
found : Class[java.awt.Frame](classOf[java.awt.Frame])
required: Class[T]
def getWorkerClass2[T <: Component]():Class[T] = {return classOf[Frame]; }
^
我不知道为什么。
编辑: 我正在使用Scala 2.10
答案 0 :(得分:3)
方法1:
class C {
def getWorkerClass2: Class[_ <: Component] = classOf[Frame]
}
方法2:
trait Worker {
def getWorkerClass2: Class[_ <: Component]
}
class A extends Worker {
def getWorkerClass2 = classOf[Frame]
}
class B extends Worker {
def getWorkerClass2 = classOf[Window]
}