Java "статический импорт" против "статического импорта" в Java 8

java static import java-8

6209 просмотра

3 ответа

1439 Репутация автора

Я пытался использовать статический импорт на Java, но писал неправильно

static import java.lang.System.out;

И код скомпилирован (хотя символ «out» не найден), синтаксических ошибок нет.

Итак, что же на самом деле означает «статический импорт»?

Автор: paulotorrens Источник Размещён: 19.01.2013 02:59

Ответы (3)


0 плюса

2686 Репутация автора

Чтобы получить доступ к статическому члену класса, вы должны использовать полное имя класса, которое его содержит. Например, чтобы получить доступ к piзначению в Mathклассе, вы должны использовать java.lang.Math.PI. Но, если вы импортируете его ( import static java.lang.Math.PI), вы можете использовать просто использовать PIв своем коде для доступа к нему.

Автор: Renjith Размещён: 19.01.2013 03:03

20 плюса

539691 Репутация автора

Решение

Это не должно компилироваться.

static import java.lang.System.out;

Согласно JLS , один статический импорт должен выглядеть так:

import static java.lang.System.out;

Все формы оператора импорта Java начинаются с по importключевому слову, и я не думаю , что есть какой - либо другой контекст (т.е. отдельно от оператора импорта) , в котором importможет быть использовано ключевое слово.

Примечание: importи staticключевые слова не являются модификаторы в данном контексте, так что «модификаторы могут быть поставлены в любом порядке» мета-правила не применяются здесь.


Короче говоря, ваш компилятор / IDE сломан или запутан ... или то, на что вы смотрите, не является реальным исходным кодом Java.

Автор: Stephen C Размещён: 19.01.2013 03:09

3 плюса

1439 Репутация автора

Видимо, это была ошибка.

Я использую Java 8 (JDK 1.8) от Sun, чтобы протестировать лямбды ... но я подумал, что это странный "статический импорт", который должен быть принят.

Спасибо за ответы на все вопросы. Я сообщу об этом Солнцу. :)

Автор: paulotorrens Размещён: 19.01.2013 03:44
Вопросы из категории :
32x32