0

在以下来自 pg 的静态导入示例中。Oracle OCA/OCP Java SE 7 Programmer I and II Study Guide 的第 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.MAX_VALUE 中输入 Integer。所以在这行代码中,我们能够使用静态方法和常量的快捷方式。

在这里将 println 称为静态方法是错误的吗?

上面的程序如文中所示。

对于标记为 4 的行,书中说:“最后,我们再做一个捷径,这次是为 Integer 类中的一个方法。”

4

3 回答 3

3

从书中引用:

  1. 现在我们终于看到了静态导入功能的好处!我们不必在 System.out.println 中键入系统!哇!其次,我们不必在 Integer.MAX_VALUE 中键入 Integer。因此,在这行代码中,我们能够使用静态方法和常量的快捷方式。

你的批评是有效的。在这行代码中,我们没有使用静态方法的快捷方式。它只是静态字段的快捷方式。

于 2018-08-09T06:12:16.817 回答
1

'import static' 只能引用类的静态成员。
所以这里它是从 System 类中引用“out”对象。
在系统类“out”中定义为

  public final static PrintStream out = null;

println() 是 java.io.PrintStream 类的非静态方法。

所以这里的 'import static' 与 println() 无关,它只是引用 'out' 对象。
'out' 进一步指的是 println()。

与整数类相同。它正在导入 Integer 类的所有静态方法和变量。所以你可以直接调用它

out.println(MAX_VALUE);  

代替

out.println(Integer.MAX_VALUE);
于 2018-08-09T05:57:17.543 回答
-1

被称为静态的方法是toHexString,不是println。该行的意思是他们能够导入toHexStringMAX_VALUE使用单个语句 ( import static java.lang.Integer.*;)。

于 2018-08-09T05:30:18.157 回答