1、原始的DAO层的类:
package
com.test;
public class UserDao {
public void add(User user) {
// .保存实体的代码
}
public User get( int id) {
// .查询实体的代码
return null ;
}
}
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;
}
}
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 ;
}
}
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 ;
}
}
public class EntityDao2 < T,ID > {
public void add(T t) {
// ..保存实体的代码
}
public T get(ID id) {
// .查询实体的代码
return null ;
}
}
这种形式,是把范型声明放在类中了,就不需每个方法都写强制类型转换。
看实际需要,哪种方法方便就用哪种吧!范型给Java编程带来了许多方便,好好利用,会达到事半功倍的效果。