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条)

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)