((东西)。这).something_else

时间:2013-03-10 19:43:21

标签: java

有人可以解释以下表达式的作用吗?

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

假设我们有这个:

System.out.println(this.size)

我理解这个表达式的作用,但我不明白(Window)的作用,所以问题是(Window)在关键字this之前的意义是什么(让我们看看假设Window是我在本例中使用的类的超类?)

3 个答案:

答案 0 :(得分:4)

(Window) this表达式正在向this类投射Window引用。 强制转换将对象引用从一个类转换为另一个类(相关)类。例如,在Java中,有人经常将Graphics个对象转换为Graphics2D个对象,如下所示:

Graphics g;
Graphics2D g2d = (Graphics2D) g;

你认为Window是相关类的超类是正确的;如果它是一个不相关的类,你会得到一个编译时错误。

转换为子类(如上例中的图形对象)可以为您提供更多功能。例如,Graphics2D对象具有Graphics个对象不具有的方法(例如,fillsetRenderingHint)。

答案 1 :(得分:3)

是类型铸造...... 就像您将integer转换为float

一样
float b= (float)1;

答案 2 :(得分:3)

一般来说没有意义。

我认为它在以下场景中很有用:

class P {
    protected String size = "P - Size";
}

class C extends P {
    protected String size = "C - Size";

    public void m() {
        System.out.println(this.size);
        System.out.println(((P)this).size);
    }

    public static void main(String... args) {
        new C().m();
    }
}

这里的输出是:

C - Size
P - Size

因此,需要显式转换(对于它自己的父级)来访问父级中的字段。