我想創建一個類的列表,像這樣:如何創建類列表?
abstract class Animal {
def name = this.getClass.getName
def say: String
}
class Dog extends Animal {
def say = "Woof"
}
class Cat extends Animal {
def say = "Meow"
}
val animalClasses = List(Dog, Cat)
這翻倒在最後一行,並顯示錯誤消息:
Zoo.scala:18: error: not found: value Dog
注意,我可以創建的列表類的實例很容易與List(new Dog(), new Cat())
,但這不是我想要的。
作爲另一個的一個運行時表示答案建議,你可以做 'val animalClasses = List(classOf [Dog],classOf [Cat])' 但是你確定你想走那條路嗎?幾乎可以肯定,您的用例可以改進爲更好的設計,即使用類型成員和類型參數,而不是將類用作值。如何以及爲了什麼你打算使用這個列表? – slouc
我的實際應用程序是[Pris.scala]中的策略列表(https://github.com/cabalamat/prisdil/blob/master/Pris.scala)。我創建了動物示例來說明問題。 –
我沒想到你實際上正在做一些涉及動物的東西:)我的意思是,你會傳遞這些值嗎?他們參與什麼樣的邏輯?你可以使用一些類似枚舉的結構而不是實際的類嗎?你有沒有考慮過案例課?在我使用Scala兩年中使用classOf的唯一真實用例是我需要在每個日誌條目中手動包含類名。 – slouc