浏览 4218 次
锁定老帖子 主题:用泛型时遇到的尴尬问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-04-17
<pk extends="" serializable=""> </pk> java 代码
在我的子类中是这么实现的 java 代码
在通常的实例化过程中,是不会存在问题的。当时的问题是,我定义了另外一个类,用于引用Code java 代码
当在spring环境中时,使用spring的bind类处理的时候,发现,我的code.primaryKey的类型居然为Serializable,而不是我想要的Long 当时以为其他地方搞错了,写了个简单的测试代码 java 代码
居然是失败的。 只有在 java 代码
才成功。 仔细跟踪,发现原来,泛型的时候,产生的编译类中,有两个同名的方法 java 代码
而java.beans规范对于这种情况是没有办法分清楚,所以也就导致了结果和预期的不同。 如果是在程序中,这点算不了问题。可是我需要在web的页面上进行值的绑定,而输入的东西,只能为字符串。所以不可能出来Long类型。 目前,采用了一种比较傻的办法,在TestBean中增加了一个临时变量x,通过x向code传值 如下: java 代码
不知道还有没有其他好的解决方案。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-04-17
把你的泛型体符号改成中文状态的,不然是会让rich editor过滤掉的。
|
|
返回顶楼 | |
发表时间:2007-04-17
rainlife 写道 把你的泛型体符号改成中文状态的,不然是会让rich editor过滤掉的。
修改了很多遍了,原来是这么回事情。 |
|
返回顶楼 | |
发表时间:2007-04-17
public interface IBusinessObject extends Serializable> extends Serializable {
PK getPrimaryKey(); void setPrimaryKey(PK id); } 这段代码正确的格式是什么样的? 没看明白 |
|
返回顶楼 | |
发表时间:2007-04-17
zyl 写道 rainlife 写道 把你的泛型体符号改成中文状态的,不然是会让rich editor过滤掉的。
修改了很多遍了,原来是这么回事情。 是的啊,我就是在中文状态下的“〈〉”,这样就可以了。 |
|
返回顶楼 | |
发表时间:2007-04-17
public class Code implements IBusinessObject〈Long>{ /** * */ private static final long serialVersionUID = 3597703574715596659L; private Long primaryKey; public void setPrimaryKey(Long id) { this.primaryKey = id; } public Long getPrimaryKey(){ return primaryKey; } } 我用的jdk1.5,代码只有这样才能编译通过增加 〈Long> |
|
返回顶楼 | |
发表时间:2007-04-17
我估计应该是《PK extends Serializable>
|
|
返回顶楼 | |
发表时间:2007-04-17
把setPrimaryKey放在IBusinessObject接口中的用意是什么?
如果只有getPrimaryKey()就应该没事了。 我一般不太喜欢在接口中放上getSomething()和setSomething(),这样很限制灵活性(比如不容易写proxy, decorator之类)。 setSomething一般来说都是在构造对象的时候用,构造好了,对象最好保持immutable。 |
|
返回顶楼 | |
发表时间:2007-04-17
ajoo 写道 把setPrimaryKey放在IBusinessObject接口中的用意是什么?
如果只有getPrimaryKey()就应该没事了。 我一般不太喜欢在接口中放上getSomething()和setSomething(),这样很限制灵活性(比如不容易写proxy, decorator之类)。 setSomething一般来说都是在构造对象的时候用,构造好了,对象最好保持immutable。 有理,在真正设计的时候是不应该的,我只是举了一个例子而已。 |
|
返回顶楼 | |