В предыдущем вопросе Доступ к scala.None from Java кажется, что люди использовали javap
, чтобы выяснить, как получить доступ к scala.None
от Ява. Я хотел бы знать, как они это сделали. FYI, ответ:
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()
для сопутствующего объекта
?