我已經爲我的Scala類創建了一個伴侶對象,其中有一個apply方法,這樣我就可以在不使用'new'的情況下創建我的類的一個實例。Scala在伴侶對象中的應用方法
object StanfordTokenizer{
def apply() = new StanfordTokenizer()
}
class StanfordTokenizer() extends Tokenizer{
def tokenizeFile(docFile: java.io.File) = new PTBTokenizer(new FileReader(docFile), new CoreLabelTokenFactory(), "").tokenize.map(x => x.word().toLowerCase).toList
def tokenizeString(str: String) = new PTBTokenizer(new StringReader(str), new CoreLabelTokenFactory(), "").tokenize.map(x => x.word.toLowerCase()).toList
}
但是,當我試圖實例化StanfordTokenizer類沒有'新'例如StandfordTokenizer.tokenizeString(str)
。
我得到的錯誤
value tokenizeString is not a member of object StanfordTokenizer
但是,如果我明確地包括應用方法類似StandfordTokenizer.apply().tokenizeString(str)
它的工作。
我覺得我缺少一些關於伴侶對象的基礎知識。有人能幫我解釋一下嗎? ^