在以下来自pg的静态导入示例中。 《 Oracle OCA / OCP Java SE 7程序员I和II学习指南》中的16:
import static java.lang.System.out; // 1
import static java.lang.Integer.*; // 2
public class TestStaticImport {
public static void main(String[] args) {
out.println(MAX_VALUE); // 3
out.println(toHexString(42)); // 4
}
}
书中提到标记为3的行:
“现在,我们终于看到了静态导入功能的好处!我们不必在System.out.println中键入System!哇!第二,我们不必在Integer中键入Integer。 MAX_VALUE。因此在这行代码中,我们能够为静态方法和常量使用快捷方式。
在这里将println称为静态方法是错误的吗?
上面的程序如文本所示。
对于标记为4的行,该书说:“最后,我们再做一次快捷方式,这一次是Integer类中的方法。”
答案 0 :(得分:3)
从书中引用:
- 现在我们终于看到了静态导入功能的好处!我们不必在System.out.println中键入系统!哇!第二, 我们不必在Integer.MAX_VALUE中键入Integer。所以在这个 一行代码,我们能够对静态方法使用快捷方式 常数。
您的批评是正确的。在那行代码中,我们没有使用静态方法的快捷方式。相反,它只是静态字段的快捷方式。
答案 1 :(得分:1)
“导入静态”只能引用类的静态成员。
因此,这里是从System类引用“出”对象。
在系统类中,“输出”定义为
public final static PrintStream out = null;
println()是java.io.PrintStream类的非静态方法。
因此,这里的“导入静态”与println()无关,它仅引用“ out”对象。
而“ out”进一步指的是println()。
与Integer类相同。它正在导入Integer类的所有静态方法和变量。因此,您可以直接将其称为
out.println(MAX_VALUE);
代替
out.println(Integer.MAX_VALUE);
答案 2 :(得分:-1)
被称为静态的方法是toHexString
,而不是println
。该行的意思是,他们能够使用单个语句(toHexString
)导入MAX_VALUE
和import static java.lang.Integer.*;
。