Scala“对象”变量是否在java中不可见?

时间:2012-08-09 16:24:19

标签: java scala scala-java-interop

  

可能重复:
  Accessing scala object fields from java

我有这个scala对象

object Foo {
  val TOTAL = 10
  def totalMethod = 10
}

当我在java代码上执行此操作时:

System.out.println(Foo.totalMethod());

它有效,但是当我做的时候

System.out.println(Foo.TOTAL);

它没有:

    [error] /Users/pfernand/Projects/foo/Whatever.java:23: cannot find symbol
    [error] symbol  : variable TOTAL
    [error] location: class Foo
    [error]         System.out.println(Foo.TOTAL);
    [error]     

3 个答案:

答案 0 :(得分:4)

Scala编译器使用字段名称生成无参数方法。 你可以使用

System.out.println(Foo.TOTAL());

答案 1 :(得分:2)

尝试

System.out.println(Foo.TOTAL());

Scala将字段设为私有字段,并提供了一个" getter"方法(使用相同的名称)进行访问。

答案 2 :(得分:1)

以上内容将创建一个getter,您应该可以使用Foo.TOTAL()进行访问。没有办法直接从Java,AFAIK访问该字段。