Доступ к переменным экземпляра Scala из Java в Eclipse

java eclipse scala

825 просмотра

1 ответ

Я подозреваю, что мне не хватает чего-то очень элементарного, но я не могу получить доступ к полям Scala из кода Java:

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);      
    }
}

Урожайность:

Исключение в потоке "main" java.lang.Error: Неразрешенная проблема компиляции: поле TestScala.myNum не отображается

Этот билет Ассембла касается темы, но мой маленький череп не может разобрать полезное решение:

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

Спасибо

Автор: Ephemiere Источник Размещён: 12.11.2019 09:47

Ответы (1)


9 плюса

Решение

Доступ к полям 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();работает.

Автор: pedrofurla Размещён: 07.11.2010 07:27
Вопросы из категории :
32x32