日期:2014-05-20  浏览次数:20725 次

Hibernate里get()方法的形参怎么是java.io.serializable
Java code

public class BaseDAO{
   protected Object get(Class clz,java.io.serializable id){
      try{
     }catch(Exception e){
        e.printStackTrace();
     }
   }
}


这个方法是通过记录id主键返回一个实体bean,但为什么id的参数类型是java.io.serializable?想不明白

------解决方案--------------------
有啥不明白的。
我举个其它的例子。

森林开大会,要求是所有能飞的(Flyable)的可以参加。通知上写的类型就是 Flyable的就行。

那么麻雀可以飞,因为他实现了Flyable了。当然可以参加了
小兔子没有实现Flyable,所以不能参加
老鹰当然也可以参加


之所以用一个接口,是因为我们无法预知到底有多少能飞的东西。所以参数那里只能用接口而不是具体的某个动物。

这也是良好的设计方法。


我们的例子里面,要求所有的Serializable 的就可以。
而......

不说了
------解决方案--------------------
楼主的意思是为什么不是一般的Object,非要Serializable

老紫竹有些偏题了
------解决方案--------------------
谁说主键必须是数字?
------解决方案--------------------
怎么可能,主键是数据库表的主键,没限制一定要什么类型吧,程序能对应上就行了
------解决方案--------------------
所有实现了java.io.serializable 都可以接收