Как узнать об использовании scala.None из Java с использованием javap?

В предыдущем вопросе, Доступ к 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 , что:

  1. None - единственный объект типа None.type , который расширяет Option
  2. apply () для сопутствующего объекта требуется

?

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