当前位置: 首页 > 面试题库 >

Scala特性-Java接口公共静态字段是否等效?

冯鸿光
2023-03-14
问题内容

在Java中:

public interface Foo {

  public static final int Bar = 0;
}

在Scala中,我如何创建一个trait Foohas Bar,并且可以通过以下方式访问它:Foo.Bar


问题答案:

您可以创建一个伴随对象(使其等同于静态对象),并使用final val关键字在其中定义变量(使其等同于最终常量):

trait Foo { }

object Foo { 
  final val Bar = 0
}

这里还有很多



 类似资料:
  • 问题内容: 这段代码: 编译并按预期工作。看起来这与以下内容相同: Java接口中的常量的“公共静态最终”是否多余?Java 1.1、1.2、1.3、1.4,…,1.8是否适用于Java,或者在Java版本中已更改? 问题答案: 在Interface中声明的变量是隐式的。这就是JLS 9.3 所说的: 接口主体中的每个字段声明都是隐式的 public,static和final 。可以为此类字段多余

  • 我有一个抽象类的许多子类,每个子类都声明了一个同名的公共静态final字段。我在考虑在抽象超类中包含这个字段,而不初始化它,并希望每个子类都能被强制初始化它。 我之所以这么想,是因为抽象类的所有子类都声明了一个名为UNIQUE_ID的公共静态最终字符串字段,并且每个子类都有必要声明一个具有该名称的字段。 我希望我的问题足够清楚,如果不清楚,请告诉我。 能不能做一些和这个差不多的事情? 编辑:添加代

  • 问题内容: 我正在查看一些开放源代码的Java项目以进入Java,并注意到其中许多具有某种“常量”接口。 例如,processing.org有一个名为PConstants.java的接口,大多数其他核心类都实现了该接口。该接口充满了静态成员。是否有这种方法的原因,或者这被认为是不良做法?为什么不使用有意义的枚举或静态类呢? 我发现使用接口允许某种伪“全局变量”很奇怪。 问题答案: 通常认为这是不好

  • 问题内容: 和之间有什么区别? 例如 : 要么 问题答案: 尽管您 确实 希望遵守约定,但在功能上没有什么区别(字节码将 完全相同 ),请访问JLS-8.3.1。场修饰符: __ 这将是奇怪的,看.. 我也建议您访问checkstyle。 编辑: 从同一页面链接到该部分: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls

  • 问题内容: Scala与Java的静态块等效吗? 问题答案: 伴随对象的构造函数(即主体)中的代码与Java类的静态初始化程序块中的代码 不 完全相同。在下面的示例中,我创建了A的实例,但是没有发生初始化。 要在创建类的第一个实例时触发伴随对象的构造,可以从类构造函数中访问它。 在许多情况下,差异并不重要。但是,如果您要发射导弹(或其他副作用),您可能会在意!

  • 我需要在我的应用程序中创建100个或更多的静态最终常数,我可以通过以下两种方式实现这一点: 创建一个简单的java并在该类中创建字段 创建接口时应将所有变量放入其中,因为接口中的所有字段都是隐式的 在上述方法中,我有以下问题: 哪种方法是实现这一目标的正确方法