簡體   English   中英

((東西)。這).something_else

[英]((something).this).something_else

有人可以解釋以下表達式的作用嗎?

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

假設我們有這個:

System.out.println(this.size)

我理解這個表達式的作用,但我不明白(Window)作用,所以問題是關鍵字this之前(Window)的含義是什么(讓我們假設Window是我使用的類的超類在這個例子中)?

(Window) this表達式this引用轉換為Window類。 強制轉換將對象引用從一個類轉換為另一個(相關的)類。 例如,在Java中,經常將Graphics對象強制轉換為Graphics2D對象,如下所示:

Graphics g;
Graphics2D g2d = (Graphics2D) g;

認為Window是相關類的超類是正確的; 如果它是一個不相關的類,你會得到一個編譯時錯誤。

轉換為子類(如上例中的圖形對象)可以為您提供更多功能。 例如, Graphics2D對象具有Graphics對象不具有的方法(例如, fillsetRenderingHint )。

它是類型轉換...就像你將integerfloat

float b= (float)1;

一般來說它沒有意義。

我認為它在以下場景中會很有用:

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

因此,需要顯式轉換(對於它自己的父級)來訪問父級中的字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM