2012-04-21 5 views
0

У меня есть строка кода, который, по существу, этоПочему не Java компилятор жалуется на это:

NameOfAClassOnTheClasspath. 

компилятор принимает это без ошибки или даже предупреждения. Я пробовал это в eclipse и в командной строке.

Что может сделать компилятор (javac 1.6) даже подумать, что это значит и почему он не жалуется?

+11

опубликовать фактический код и его контекст – Jems

+7

Это зависит от того, что следующая строка. – trutheality

+0

Вы имеете ввиду, что вы написали это прямо под методом main()? – Ketan

ответ

8

Поскольку пробела игнорируются, что-то вроде

SomeClass. 

staticMethod(); 

Является вполне законным способом вызова

SomeClass.staticMethod(); 

(Вы можете заменить метод с почти любым другим статическим членом класса)

eg внутренний интерфейс другого интерфейса:

Map. 

Entry<Integer,Integer> x; // Declares a Map.Entry<Integer,Integer> 

Конечно, это довольно ужасный стиль кодирования, если не вы нарушаете линии, которые слишком долго, чтобы поместиться на экране, и в этом случае вы должны отступом остальной части строки ,

+0

Да, это он. Следующая строка - это logger.log («некоторое сообщение о регистрации); где logger - не закрытый статический член класса NameOfAClassOnTheClasspath. –

0

Учтите, что DOT является двоичным оператором, поэтому он принимает класс и метод.

Если вы хотите, чтобы ClassLoader загружал класс, потому что вы что-то делаете в статической инициализации, вам следует рассмотреть возможность использования Class.forName («YourClass»);

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