【问题标题】:Explanation to a certain java command某个java命令的解释
【发布时间】:2015-03-15 20:34:43
【问题描述】:
System.out.println(((Window)this).size);

假设我们有一个 Window 类,上面的命令写在子类的方法中。我需要一些帮助来理解 (Window)this 究竟做了什么。它指的是哪里。

【问题讨论】:

    标签: java class printing this


    【解决方案1】:

    假设子类和Window 类都有一个名为class 的成员。在这种情况下,子类的size 隐藏了Windowsize

    ((Window)this).size 返回Window 类的size 成员(假设它是可访问的),而this.size 将返回子类的size 成员。

    【讨论】:

    • 那么如果我们说Window是超类写((Window)this).size和super.size是一回事?
    • @ohyez96 是的,两者都会返回相同的值
    【解决方案2】:

    System.out.println(((Window)this).size);

    可以分解为:

    • this对当前实例的引用
    • (Window)this 转换为 Window 类,因此可以访问非私有 Window 成员
    • (Window)this.size访问这个Window的size成员
    • System.out指的是类型PrintStream类的引用变量
    • SystemStatically refers to a final class from java.lang package
    • out 对 PrintStream 类和 System 类的静态成员的引用
    • println 是 PrintStream 类的方法

    总之,

    System.out.println(((Window)this).size);    
    

    会将此窗口大小发送到控制台(前提是 out 尚未被重定向)并在其后面添加新行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 2020-12-10
      • 2013-08-26
      • 1970-01-01
      • 2021-04-06
      • 2014-10-25
      相关资源
      最近更新 更多