2014-03-08 2 views
0
package pack1; 

public class A { 
    public static int i = 10; 

    public static void test() { 
    System.out.println("done"); 
    } 

} 



//this is other .class file 
package pack2; 
import static pack1.A; 
import static java.lang.System.out; 
public class Manager2 { 
    public static void main(String[] args) { 
      out.println(i); 
      test(); 
    } 
} 

Всякий раз, когда я использую import static pack1.A; как я использовал в классе Manager2 вместо import static pack1.A.*;, компилятор выдает ошибку. Не стоит import static pack1.A; класс импорта A, включая статические элементы?статический член в Java

Я знаю, что использование import static pack1.A.i импортирует статические элементы, но «import static pack1.A;» отображается ошибка.

+5

Потому что именно так указан язык. Либо вы импортируете все статические члены, используя *, либо импортируете один статический член за раз. Статический импорт самого класса не является законным. –

+0

Возможный дубликат [статический импорт Java "vs." import static "в Java 8] (http://stackoverflow.com/questions/14410681/java-static-import-vs-import-static-in-java-8) – givanse

ответ

1

Java Language Specification описывает только два разных подхода к статическому импорту.

Single-Static-Import declarations формы import static TypeName . Identifier ; которая «импортирует все доступные статические члены с заданным простым именем из типа».

Static-Import-on-Demand declaration позволяет «все доступные статические члены именованного типа, которые будут импортированы в случае необходимости» и имеет вид import static TypeName . * ;.

По существу, вы должны указать все имена методов, которые вы хотели импортировать, или использовать нотацию .*, если хотите, чтобы вы могли использовать любой метод по мере необходимости.

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