随笔-42  评论-578  文章-1  trackbacks-0


1、原始的DAO层的类:

package com.test;

public class UserDao {
    
    
public void add(User user){
        
//.保存实体的代码
    }

    
    
public User get(int id) {
        
//.查询实体的代码
        return null;
    }


}

其中,User类代码比较简单,如下:

package com.test;

public class User {
    
    
private int id;
    
private String name;
    
public int getId() {
        
return id;
    }

    
public void setId(int id) {
        
this.id = id;
    }

    
public String getName() {
        
return name;
    }

    
public void setName(String name) {
        
this.name = name;
    }

    
}

2、我们将Dao层的类写成范型的形式,有两种写法:
其一、
package com.test;

public class EntityDao1 {
    
    
public <T> void add(T t){
        
//查询实体的代码
    }

    
    
public <T,ID> T get(ID id){
        
//.保存实体的代码
        return null;
    }


}
        范型一般用于方法的参数或者方法的返回值,上面的写法,我们要使范型有效,就须在方法的返回类型前加入强制范型转换。其中,add(T t)的参数用了范型,它的返回值是void型,就在void 前用强制类型转换,即加上<T>,强制转换成范型的形式,这样就不会报错了。而T get(ID id),由于它的参数和返回类型都用了范型,故要在返回类型T前强制转换,即<T,ID>。

其二,范型也可写成以下形式:
package com.test;

public class EntityDao2<T,ID> {
    
    
public void add(T t){
        
//..保存实体的代码
    }

    
    
public T get(ID id){
        
//.查询实体的代码
        return null;
    }


}
这种形式,是把范型声明放在类中了,就不需每个方法都写强制类型转换。

看实际需要,哪种方法方便就用哪种吧!范型给Java编程带来了许多方便,好好利用,会达到事半功倍的效果。

本文原创,转载请注明出处,谢谢!http://www.blogjava.net/rongxh7(心梦帆影JavaEE技术博客)
    

posted on 2009-05-27 02:47 心梦帆影 阅读(3820) 评论(6)  编辑  收藏 所属分类: JavaSE

评论:
# re: Java范型的两种写法 2009-05-27 09:44 | 于翔
谢谢 学习了  回复  更多评论
  
# re: Java范型的两种写法 2009-05-27 13:24 | Hadis
我觉得方法一说的是声明泛型方法
而方法二是声明泛型类 和强制类型转换无关吧?  回复  更多评论
  
# re: Java范型的两种写法 2009-05-27 18:01 | YXY
比较常用第二种写法,不过它也有一些限制:
如:
不应在静态成员中引用封闭类型参数。
不能用基本类型实例化泛型类型参数。
不能在数据类型转换或 instanceof 操作中使用“外露”类型参数。
不能在 new 操作中使用“外露”类型参数。
不能在类定义的 implements 或 extends 子句中使用“外露”类型参数  回复  更多评论
  
# re: Java范型的两种写法 2009-05-28 14:43 | 奇山
学习了。  回复  更多评论
  
# re: Java范型的两种写法 2009-06-24 00:14 | realman
可否第种举个例子,光这么说不大好理解,先谢过.@YXY
  回复  更多评论
  
# re: Java范型的两种写法 2010-10-15 22:47 | 心梦
心梦  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: