泛型应用之二

自定义泛型-------泛型类和反射泛型

1,泛型类

如果一个类多处都要用到同一个泛型,这时可以把泛形定义在类上(即类级别的泛型)这个比较简单举个例子:

class Demo<T> {
	//在类上定义的泛形只对类的非静态成员有效
	public void run(T t){
	}
	public void eat(T t){
	}
	public static <T> void test(T t){
	}
}

2,反射泛型,这个比较的强大,做为新手,只知道里面的一部分功能,我就用个例子来描述下吧,

先设计一个Person实体

public class Person {
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

}


现在我要写一个DAO,而通过反射泛型和可以写一个通用性很好的Dao;

public class BasicDao<T> {
	private Class<T> clazz;
	@SuppressWarnings("unchecked")
	// 写个无参的构造方法,得到其子类要处理的实体
	public BasicDao() {
		clazz = (Class<T>) this.getClass();// 得到调用者的字节码
		ParameterizedTypeImpl type = (ParameterizedTypeImpl) clazz
				.getGenericSuperclass();// 得到调用者父类的泛型类型
		Type typ[] = type.getActualTypeArguments();//得到泛型类型里面的具体参数数组(用处理的实体类型),在本例中是要得到Person
		System.out.println(typ[0]);//打印第一个参数(Person)
	}
	/* 增加 */
	public void add(T t) {
	}
	/* 查找一个 */
	public T find(String id) {
		return null;
	}
	/* 全部查找 */
	public List<T> find() {
		return null;
	}
	/* 删除 */
	public void delete(String id) {
	}
	/* 更新 */
	public void update(String id) {
	}

}
用具体类型的Dao来继承basicdao

public class PersonDao extends BasicDao<Person>{

}
这个类里面一句代码都不用写就有了增,删,改,查功能

再写个测试类

public class GenericDemo {
	public static void main(String args[]){
		PersonDao pd = new PersonDao();//实例化PersonDao时调用BasicDao中的构造方法
		Person t = new Person();
		String id = null;
		pd.add(t);
		pd.delete(id);
		pd.find();
		pd.find(id);
	}
	

}
不知道什么地方有没有写错,高手多多指教额!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值