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, и только те вещи, которые мне нужны, являются абстрактными?