2014-03-12 46 views
1

我有一個Java/Scala混合Maven項目。我需要重用Saddle方法make,該方法具體定義爲Index特徵的一部分。如果以任何方式幫助,該方法被定義爲here。我曾嘗試從java使用Index.makeIndex$class.make調用該方法,但在這兩種情況下,我都收到error: cannot find symbol編譯錯誤。如何從Java調用具體的Scala特徵方法?

有沒有辦法從Java調用具體的Trait方法?

+0

請出示你的'trait'代碼 - 我假設'使'是在'trait Index'上實現的,但這是一個假設,並且給出'Index $ class.make'不起作用可能是錯誤的 –

回答

5

A trait與Java接口類似,它不是一個具體的構造函數。

從斯卡拉:

class IndexImpl extends Index[SomeParamtersHere] {} 
val x = new ClassImpl 
x.make(..) 

或者使用對象:

object Index extends Index {} 
Index.make(..) 

從Java:

性狀與具體實現將編譯到適當的abstract class。如果某些成員沒有具體實施,則必須實施它們。

import org.saddle.Index 
public class TraitImpl extends Index$class { 
} 
0

好的我找到了答案。調用它像這樣的工作,但只是因爲指數特質已經有可用的(我沒有注意到之前)索引對象:

Index$.MODULE$.make(rrule, startDate, endDate); 
相關問題