为什么在java中使用static关键字导入包时会跳过类名?

时间:2014-06-24 17:45:47

标签: java

通常当我们创建一个静态方法时,我们使用classname.method()语句来引用它,因此static关键字允许我们在不创建任何类对象的情况下调用该方法,但我们必须编写该类的名称

为什么在静态导入时我们会跳过类名?

例如: -

import static java.lang.System.*;

class example {
    public static void main(String args[]) {
        out.print("Where is the class name?");
    }
}

3 个答案:

答案 0 :(得分:2)

import static java.lang.*;

这是一种错误的语法。这将导致编译错误。包导入不使用静态关键字。

导入静态字段的语法是:

import static <package>.<classname>.* ;

import static <package>.<classname>.<fieldname>;

import static <package>.<classname>.<methodname>;

你可以做到

import static java.lang.System.*;

class example {
    public static void main(String args[]) {
        out.print("Where is the class name?");
    }
}

您可以查看documentation了解更多详情。

答案 1 :(得分:0)

你做不到。 import static java.lang.*;将是编译时错误。要导入静态成员,您必须提及import static java.lang.<Classname>.<field_member>

答案 2 :(得分:0)

执行静态导入后可以跳过类名的原因是因为创建了静态导入以跳过类名。这是他们加入语言的唯一原因。

<强>之前:

public class Calculate {
    public static void main(String[] args) {
        double value = Math.sin(0.523598776); // 30 degrees in radians
        System.out.println(value);
    }
}

<强>后:

import static java.lang.Math.sin;

public class Calculate {
    public static void main(String[] args) {
        double value = sin(0.523598776); // 30 degrees in radians
        System.out.println(value);
    }
}

此处的static关键字与static关键字的其他用法无关,用于声明static方法或static字段。他们只是想找到一些允许这样做的语法,而不在语言中引入新的关键字,因此他们重用现有关键字用于新目的。