cindy 重名函数

 

前几天MSN 和Arbow聊天时,他提到了可以在Cindy的Session接口中加入Object getAttribute(String key)以及void setAttribute(String key, Object value)两个方法,应用会更方便一些。原来的Object getAttachment()和void setAttachment(Object obj)虽然也是这个用途,但是由于只能将设置一个Object对象,用起来多多少少有些不方便,MINA也同时提供了这两种方法来方便应用。
 
我觉得很有道理,我自己在使用Cindy时也常碰到要关联多个对象到Session,用attachment来做也是有点麻烦,况且加入一个这个的接口并不需要什么时间和技术含量,在AbstractSession中用一个Map来实现就可以了。
 
但改完Session接口后就发现了一个新问题,加入的Object getAttribute(String)与JMX DynamicMBean中的Object getAttribute(String attribute) throws AttributeNotFoundException,
 MBeanException, ReflectionException有冲突。这种事情我还是第一次遇到,基本相同的声明,却有着完全不同的意义,Java语言似乎也没有提供某种机制来解决这种问题。
 
对于我而言,事情是比较好办的,我可以将Session接口的getAttribute改为getSessionAttribute来解决冲 突。但是如果对于一个应用类要实现两个无法改变的接口,并且接口中有意义不同的重名函数该如何解决呢?当然,这种情况应该是极为罕见。
 
MINA的运气相对差一点,它的Roadmap中提到要在1.1中才加入JMX的支持,到时发生冲突的概率会很大。不过只要它不返回类似Cindy这样的JmxSession,还是能通过Dynamic MBean来避免的。如:
 
public Object getAttribute(String attribute) {
    if ("attribute".equals(attribute)) {
        return session.getAttribute();
    }
    ......
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值