gpt4 book ai didi

java - Scala 无法解析继承的 Java 接口(interface)常量成员

转载 作者:搜寻专家 更新时间:2023-11-01 02:45:44 24 4
gpt4 key购买 nike

Java 中的类层次结构:

接口(interface):集群分类

Kluster 类层次结构如下所示

Cluster  <- ,
+-- Kluster
Classify <- '

文件:oop/Cluster.java

package oop;

public interface Cluster {
public String HELLO = "hello";
}

文件:oop/Kluster.java

package oop;

interface Classify {
public String GOODBYE = "good bye";
}

public class Kluster implements Cluster, Classify {

}

文件:oop/KlusterMain.java

package oop;

public class KlusterMain {
public static void main(String[] args) {
System.out.println(Kluster.HELLO);
System.out.println(Kluster.GOODBYE);
}
}

到目前为止,一切都按预期进行。我可以打印 HELLO 和 GOODBYE 常量。

现在,当我尝试从 Scala 编译器访问它们时,出现错误。

文件:oop/cluster.scala

package oop

object cluster {
def main(args: Array[String]) {
val k = new Kluster
println(Cluster.HELLO)
println(Classify.GOODBYE)
println(Kluster.HELLO) // <- this is the problematic line
}
}

错误:

Scala Problem
value HELLO is not a member of object oop.Kluster
/scala-snippets/src/main/scala/oop/cluster.scala
line 8

为什么 Scala 不能解析 Kluster 对象同时实现 ClusterClassify 接口(interface)的层次结构?

最佳答案

您知道将常量放入接口(interface)中以在实现类时使用它们是一种糟糕的方法,不是吗?在 Java 中,您使用带有私有(private)构造函数的 final 类,并在需要时使用 import static 来缩短常量名称。在 Scala 中,您使用 object 和导入。但是 Scala 没有静态字段的概念——它有正确参与继承的对象。将 Java 中的静态字段与适当的面向对象系统统一起来是不可能的,因此在 Scala 中,您不能使用子类中的静态成员(字段和方法)。

另见 here .

关于java - Scala 无法解析继承的 Java 接口(interface)常量成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22628298/

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