我们不能从Java的Component类中覆盖size()吗?
这是一个简单的类,myPanels是一个已在构造函数中初始化的ArrayList。
/**
* Returns number of panels
*/
@Override
public int size(){
return myPanels.size();
}
错误读取: 返回类型与Component.size()
不兼容编辑 - 解决方案
解决方案是选择不同的方法名称。使用“size()”以外的其他东西
答案 0 :(得分:3)
如果要找到可靠地更改GUI组件大小的方法,则应覆盖getPreferredSize()
而不是处理大小或getSize()
。这样,您的组件将与大多数布局管理器一起使用。
否则,如果您使用此方法返回它所拥有的ArrayList的大小而不是尝试设置组件的可视化大小,那么为您的类提供一个方法来执行此操作,但不要将其命名getSize()
因为这会混淆其他编码人员和编译人员。而是将其命名为getMyPanelSize()
或类似的东西。
答案 1 :(得分:0)
假设您正在重写java.awt.Component.size()
答:自Java 1.1以来,它已被弃用,而是使用getSize()。
B:不管怎样,它必须返回一个Dimension
答案 2 :(得分:0)
size()必须返回Dimension,自1.1以来不推荐使用。
我想你想覆盖getSize()?
在Java 5.0之前,当你重写一个方法时,两个参数和 返回类型必须完全匹配。在Java 5.0中,它引入了一个新的 设施称为协变返回类型。您可以使用覆盖方法 相同的签名但返回返回的对象的子类。在 换句话说,子类中的方法可以返回其类型的对象 是具有相同方法的方法返回的类型的子类 超类中的签名。
答案 3 :(得分:0)
Component的size()
方法返回类型为Dimension
的对象 - 这意味着您不能返回int。
一种方法是将方法命名为其他方法,例如panelsSize()
。另一种方法是返回Dimension
。