![](/img/trans.png)
[英]Invoke overridden method in scala trait extending java class A, implemented by java class B
[英]Extending Java Class with Scala Trait
我想將一個類ContextItem
定義為具有特征Confidence
度的java類Predicate
的擴展。
信心是一個簡單的特征,它只是為其擴展的內容添加一個置信區域。
trait Confidence{
def confidence:Double
}
我只是通過聲明來定義我的ContextItem
類:
class ContextItem extends Predicate with Confidence{}
但是試圖編譯它會產生......
com/slug/berds/Berds.scala:11: error: overloaded method constructor Predicate with alternatives:
(java.lang.String,<repeated...>[java.lang.String])com.Predicate <and>
(java.lang.String,<repeated...>[com.Symbol])com.Predicate <and>
(java.lang.String,java.util.ArrayList[com.Symbol])com.Predicate <and>
(com.Predicate)com.Predicate <and>
(com.Term)com.Predicate <and>
(java.lang.String)com.Predicate
cannot be applied to ()
class ContextItem(pred:Predicate) extends Predicate with Confidence{
^
這似乎是一個微不足道的例子,所以出了什么問題?
謂詞(不是我的)看起來像:
/** Representation of predicate logical form. */
public class Predicate extends Term implements Serializable {
public Predicate(String n) {
super(n);
}
public Predicate(Term t) {
super(t);
}
public Predicate(Predicate p) {
super((Term)p);
}
public Predicate(String n, ArrayList<Symbol> a) {
super(n, a);
}
public Predicate(String n, Symbol... a) {
super(n, a);
}
public Predicate(String n, String... a) {
super(n, a);
}
@Override
public Predicate copy() {
return new Predicate(this);
}
}
謂詞或其任何祖先都沒有實現信心。
我認為它列出了Predicate
所有構造函數,並通知您沒有使用它們中的任何一個。 默認設置是使用無參數構造函數,此處不存在。 調用的語法,例如, (String)
超級構造函數,將是
class ContextItem extends Predicate("something") with Confidence
要么
class ContextItem(str: String) extends Predicate(str) with Confidence
此外,目前你的def confidence
是一個抽象方法,所以在你給它定義之前不會編譯。 如果您希望該特征添加可寫的confidence
區域,那么這就是您想要的:
var confidence: Double = 0.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.