iteye_1126 2013-07-31 09:39
浏览 286
已采纳

java方法重载的错误

定义了一个父类一个子类
public class MSGVO {
private long msgId;
public long getMsgId() {
return msgId;
}
public void setMsgId(long msgId) {
this.msgId = msgId;
}
}
public class ParamMsgVO extends MSGVO {
public void setMsgId(String maxId) {
if (StringUtils.isNotEmpty(maxId)) {
setMsgId(Long.parseLong(maxId));
}
}
}

然后在调用paramMsgVO.setMsgId(maxId);的时候偶尔会报
[ERROR][2013-07-26 00:18:16,099]Illegal overloaded setter method for property msgId in class com.hisense.hitv.msgpullservice.service.beans.ParamMsgVO. This breaks the JavaBeans specification and can cause unpredicatble results.

这个写有什么问题吗?为什么不是每次都报错?

  • 写回答

4条回答 默认 最新

  • zyn010101 2013-07-31 10:08
    关注

    编写javabean就是编写一个java的类,所以你只要会写类就能编写一个bean,这个类创建的一个对象称做一个bean。为了能让使用这个bean的应用程序构建工具(比如JSP引擎)知道这个bean的属性和方法,只需在类的方法命名上遵守以下规则:
    1. 如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法:
    getXxx(),用来获取属性xxx。
    setXxx(),用来修改属性xxx.。
    2. 对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用"is"代替上面的"get"和"set"。
    3. 类中访问属性的方法都必须是public的,一般属性是private的。
    4. 类中如果有构造方法,那么这个构造方法也是public的并且是无参数的。

    标准的javabean 一个属性对应两个方法:getXxx(),用来获取属性xxx。
    setXxx(),用来修改属性xxx.。
    当你调用ParamMsgVO的setMsgId的时候有些按照标准的javabean规则设计的框架调用的时候可能会迷茫采用这两个方法中的哪一个而报错

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?