我喜欢定义一个返回类对象的工厂方法,例如用于创建 gui 对象。

我定义了一个方法

def getWorkerClass2[T <: Component]():Class[T] = {return classOf[Frame]; }

它返回组件类的子类,但 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

最佳答案

方法一:

class C {
  def getWorkerClass2: Class[_ <: Component] = classOf[Frame]
}

方法二:
trait Worker {
  def getWorkerClass2: Class[_ <: Component]
}

class A extends Worker {
  def getWorkerClass2 = classOf[Frame]
}

class B extends Worker {
  def getWorkerClass2 = classOf[Window]
}

关于scala - 如何返回一个子类的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22376568/

10-13 07:14