[英]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.