2013-04-17 9 views
7

no'lu bir sınıfın Confidence özelliğine sahip bir sınıf Predicate uzantısı olarak tanımlamak istiyorum.Scala Trait'i ile Java Sınıfını Genişletme

Güven, uzadığı her şeye bir güven alanı ekleyen basit bir özelliktir.

trait Confidence{ 
    def confidence:Double 
} 

Sadece belirterek benim ContextItem sınıfını tanımlayan am: ... Bu önemsiz bir örnek gibi görünüyor

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{ 
      ^

class ContextItem extends Predicate with Confidence{} 

Ama bu verim derlemek çalışırken, bu yüzden ne oluyor yanlış?

/** 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); 
    } 
} 

Yüklem ne de atalarının hiçbir Ne güveni uygular: gibi (benim değil)

Yüklem görünüyor.

+0

biz 'Predicate' sınıfı görebilir miyim: Bir yazılabilir confidence alan eklemek özelliği amaçlanan o zaman bu yerine istediğin bu mu? 'Güven 'yöntemini uygular mı? – Nick

cevap

6

Predicate'un tüm yapıcılarını listeleyip, bunların hiçbirini kullanmadığınızı bildiriyorum. Varsayılan, burada mevcut olmayan parametresiz bir kurucu kullanmaktır. sözdizimi, çağırmak örneğin (String) süper yapıcı olacağını senin def confidence soyut bir yöntemdir, bu yüzden size kadar derlenmeyecektir anda

class ContextItem extends Predicate("something") with Confidence 

ya da

class ContextItem(str: String) extends Predicate(str) with Confidence 

, bir tanım ver.

var confidence: Double = 0.0