【发布时间】:2018-08-09 05:22:43
【问题描述】:
在以下来自 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 类中的一个方法。”
【问题讨论】:
-
我猜它被认为是静态的,因为它是通过静态成员访问的,但 println 实际上并不是 PrintStream 类中的静态方法。这是解释语句的正确方法吗?
-
你是对的,
println绝对不是任何人定义的static方法,当然也不是 JLS。它是System类的static成员的实例方法。但是,第 4 行,toHexString是static方法。 -
static方法只能被其他static方法直接引用。 -
@dryleaf 这甚至意味着什么?如果我当然可以直接从实例方法调用
static方法!或者来自演员!
标签: java static-members static-import