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

在Eclipse中从Java访问Scala实例变量

柯正谊
2023-03-14
问题内容

我怀疑我必须缺少一些非常基础的东西,但是我似乎无法从Java代码访问Scala字段:

package test;

class TestScala (myNumber : Int){
    val myNum : Int = myNumber;
}


package test;

import test.TestScala;

public class TestJava {
    public static void main(String[] args) {
        TestScala t = new TestScala(2);

        int x = t.myNum;

        System.out.println(x);      
    }
}

产量:

线程“主” java.lang.Error中的异常:未解决的编译问题:字段TestScala.myNum不可见

这张Assembla票证触及了这个主题,但我的小头盖骨无法解析有用的解决方案:

http://scala-ide.assembla.com/spaces/scala-ide/tickets/1238-objects-not-
visible-to-java-in-mixed-java-scala-eclipse-project

谢谢


问题答案:

通过具有相同名称的方法访问Val字段。

scalac -Xprint:typer将向您显示:

class TestScala extends java.lang.Object with ScalaObject {
  <paramaccessor> private[this] val myNumber: Int = _;
  def this(myNumber: Int): $iw.$iw.TestScala = {
    TestScala.super.this();
    ()
  };
  private[this] val myNum: Int = TestScala.this.myNumber;
  <stable> <accessor> def myNum: Int = TestScala.this.myNum
}

因此在Java中int x = t.myNum();有效。



 类似资料:
  • 问题内容: 我试图将一些Scala代码注入到现有的Java应用程序中。(所以,话说回来,我想要更多的乐趣)。 我在Scala中创建一个单例的东西 现在,在OldJava.java中 我应该填写什么以便Java调用showMyPower方法?我尝试了两者 ,但没有任何效果。 (使用Jad反编译类文件,除了胡说八道之外,什么都没给我显示。) 编辑 我删除了声明,scala产生了预期的静态方法。(呼吁工

  • 问题内容: 我有这个课: 有什么方法可以使用自变量访问静态变量?我宁愿这样做,因为长名称不可读。 问题答案: 使用。这对新旧样式类均适用。

  • 问题内容: Java中以下变量的可访问性有什么区别? 我对最后一个正在做什么最感兴趣。 问题答案: :任何人均可读/写 :对于子类的实例以及在封闭包中可读写 :对于类的任何实例以及内部或外部(包含)实例均是可读写的 :包专用,对于同一包内的所有类均可读写 有关更多详细信息,请参见JLS 编辑:添加了受保护的注释,说明访问是从同一程序包内部授予的,你们是完全正确的。还为添加了评论private。我想

  • 问题内容: 是否可以从Java中的另一个类访问一个类中变量的实例。 假设您在A类中具有以下条件: 我想对此类中的队列进行更改,然后可以使用它从另一个类中对其进行访问。 我如何从另一个类访问缓冲区的实例?可能吗? 问题答案: 添加吸气剂: 然后,如果您有Whatever的实例:

  • 你可以使用与写入实例变量值相同的语法来读取实例变量的值: int x = blank.x; 表达式blank.x表示“进入名为blank的对象中并取得x的值”。这里我们把这个值赋值给局部变量x。注意,名为x的局部变量和名为x的实例变量并不冲突。点号的作用就是明确地区分你所指的是哪一个变量。 可以将点记号用作C++表达式的一部分,所以下面代码是合法的: cout << blank.x <

  • 本文向大家介绍我们可以从Java中的静态方法访问实例变量吗?,包括了我们可以从Java中的静态方法访问实例变量吗?的使用技巧和注意事项,需要的朋友参考一下 我们无法直接访问静态方法内的实例变量,因为静态方法只能访问静态变量或静态方法。 顾名思义,实例变量与类的实例相关。因此,直接从不依赖于任何特定实例的静态方法访问它是没有意义的。因此,要访问实例变量,我们必须具有要从中访问实例变量的类的实例。 例