В предыдущем вопросе, Доступ к scala. Нет из Java , похоже, что люди использовали javap
, чтобы выяснить, как получить доступ к scala.None
из Java. Я хотел бы знать, как они это сделали. К вашему сведению, ответ:
scala.Option$.MODULE$.apply(null);
, который можно сократить до:
scala.Option.apply(null);
Для этой программы ( OptionTest.scala
):
object OptionTest extends App {
val x = scala.None
val y = scala.Some("asdf")
}
Я запустил на нем javap
вот так:
javap -s -c -l -private OptionTest
Это часть вывода javap
:
public static final scala.None$ x();
Signature: ()Lscala/None$;
Code:
0: getstatic #11; //Field OptionTest$.MODULE$:LOptionTest$;
3: invokevirtual #55; //Method OptionTest$.x:()Lscala/None$;
6: areturn
Я также запускал javap на scala.None
и scala.Option
. Как можно понять из вывода javap
, что:
None
- единственный объект типа None.type
, который расширяет Option
apply ()
для сопутствующего объекта требуется ?