[英]((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
對象不具有的方法(例如, fill
和setRenderingHint
)。
它是類型轉換...就像你將integer
為float
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.