静态成员的方法是否被视为静态成员?



在以下来自Oracle OCA/OCP Java SE 7 Programmer I and 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中键入系统!哇!其次,我们不必在 Integer.MAX_VALUE 中键入 Integer。因此,在这一行代码中,我们能够使用静态方法和常量的快捷方式。

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

上面的程序如文中所示给出。

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

引自书中:

  1. 现在我们终于看到了静态导入功能的好处!我们不必在System.out.println中键入系统!哇!第二 我们不必在 Integer.MAX_VALUE 中键入 Integer。所以在这个 代码行我们能够使用静态方法的快捷方式和 不断。

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

"import static" 只能引用类的静态成员。所以这里它引用了 System 类中的 'out' 对象。

In 系统类 'out' 定义为

  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);

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

相关内容

  • 没有找到相关文章

最新更新