簡體   English   中英

java類無法從Component覆蓋size()?

[英]java class cannot override size() from Component?

我們不能從Java的Component類重寫size()嗎?

這是一個簡單的類,myPanels是一個在構造函數中已初始化的ArrayList。

    /**
 * Returns number of panels
 */
@Override
public int size(){
    return myPanels.size();
}

讀取錯誤:返回類型與Component.size()不兼容



編輯-解決方案

解決方法是選擇其他方法名稱。 使用了'size()'以外的東西

如果要找到可靠地更改GUI組件大小的方法,則應重寫getPreferredSize()而不是處理size或getSize() 這樣,您的組件就可以在大多數布局管理器中很好地發揮作用。

否則,如果您正在使用此方法返回其持有的ArrayList的大小,而不是嘗試設置組件的可視化大小,請為您的類提供一個執行此操作的方法,但不要將其命名為getSize()因為這會混淆其他編碼人員和編譯器。 而是將其命名為getMyPanelSize()或類似名稱。

假設您要覆蓋java.awt.Component.size()

答:從Java 1.1開始已棄用,請改用getSize()。

B:無論哪種方式,它都必須返回一個Dimension

size()必須返回Dimension,從1.1開始不推薦使用

我認為您想覆蓋getSize()?

在Java 5.0之前,重寫方法時,參數和返回類型必須完全匹配。 在Java 5.0中,它引入了一種稱為協變返回類型的新功能。 您可以覆蓋具有相同簽名的方法,但返回所返回對象的子類。 換句話說,子類中的方法可以返回一個對象,該對象的類型是該方法返回的類型的子類,該方法在超類中具有相同的簽名。

Component的size()方法返回Dimension類型的對象-這意味着您無法返回int。

一種方法是將方法命名為別的名稱,例如panelsSize() 另一個是返回Dimension

暫無
暫無

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

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