Перевод абстрактных классов Scala на Java

Scala в последнее время вызывает у меня много головной боли, так как я не могу найти информацию о Интернет. Трудно получить информацию, так как Scala определяет свой собственный язык (который я еще не знаю) с набором бесконечныхтерминов.

Я задал несколько вопросов на StackOverflow относительно этого перевода между Scala и Java, и в последнем вопросея сказал, что собираюсь отказаться от этого подхода. Однако хотелось бы понять, что происходит.

Представьте класс Scala:

abstract class Block(n: String) {

    require(n != null)
    val name = n

    var log: ArrayList[String]
    var inputs: ArrayList[Input[_]]
    var outputs: ArrayList[Output[_]]

    def newValue
}

Пока все хорошо. Проблема в следующем:

я не могу получить доступ к полям класса (и да, я пробовал this.inputs()). И, вероятно, потому, что это переводится так:

public abstract class pt.thesis.tiago.Block 
    extends java.lang.Object implements  scala.ScalaObject{

    public java.lang.String name();
    public abstract java.util.ArrayList log();
    public abstract void log_$eq(java.util.ArrayList);
    public abstract java.util.ArrayList inputs();
    public abstract void inputs_$eq(java.util.ArrayList);
    public abstract java.util.ArrayList outputs();
    public abstract void outputs_$eq(java.util.ArrayList);
    public abstract void newValue();
    public pt.thesis.tiago.Block(java.lang.String);
}

Почему каждая вещь абстрактна? Разве я не могу делать то же, что и Java, и только те вещи, которые мне нужны, являются абстрактными?

0
задан Community 23 May 2017 в 12:04
поделиться