gpt4 book ai didi

java - 使用 Scala Trait 扩展 Java 类

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:38 24 4
gpt4 key购买 nike

我想定义一个类 ContextItem 作为 java 类 Predicate 的扩展,具有特征 Confidence

置信度是一个简单的特征,它只是向它扩展的任何内容添加一个置信度字段。

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 及其任何祖先都没有实现置信度。

最佳答案

我认为它列出了 Predicate 的所有构造函数,并通知您您没有使用它们中的任何一个。默认是使用无参数构造函数,此处不存在。例如,调用 (String) super 构造函数的语法是

class ContextItem extends Predicate("something") with Confidence

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

此外,目前您的 def confidence 是一个抽象方法,因此在您给它定义之前不会编译。如果您希望特征添加可写的 confidence 字段,那么这就是您想要的:

var confidence: Double = 0.0

关于java - 使用 Scala Trait 扩展 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16070049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com