2014-10-30 2 views
0
public class InnerClass { 
    private static class B{} 
} 

Каковы соответствующие .class файлы, что это компилируется?Статический внутренний класс компиляции

Где-то я слышал ответ, как он компилирует

  • InnerClass.class
  • B.class

Но после того, как я на самом деле пробовал, это было

  • InnerClass $ B.class
  • InnerClass.class.

Любой метод может быть скомпилирован в:InnerClass.class и B.class?
(Это из интервью.)

+1

«Внутренние определения классов производят дополнительные файлы классов. Эти файлы классов имеют имена, объединяющие имена внутренних и внешних классов, такие как MyClass $ MyInnerClass.class». [javac] (http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html) – Dirk

+0

Согласно приведенным ниже ответам, я бы предположил, что интервьюер действительно допустил ошибки в этом вопросе. Нет никакого способа, если это не общедоступный класс, он может быть скомпилирован отдельно. –

ответ

1

Пока B класс состоит в InnerClass, это не представляется возможным. Знак $ генерируется компилятором, чтобы указать, что этот класс является вложенным классом.

Вам необходимо определить B как класс верхнего уровня, чтобы сгенерировать файл B.class.

+0

Согласно приведенным ниже ответам, я бы предположил, что интервьюер действительно допустил ошибки в этом вопросе. Нет никакого способа, если это не общедоступный класс, он может быть скомпилирован отдельно –

Смежные вопросы