java编程思想之泛型类

泛型深入研究:

为了实现一个泛型类,暂不知道类的类型,利用类生成器生成类对象(可以生成不同的类对象)

首先定义生成器接口:

package com;

public interface Gernerator<T> {
	T next();
}

这是定义的生成器接口(泛型)

然后就是顶一个泛型类来实现这个接口的方法

public class test<T> implements Gernerator<T>{
	private Class<T> types;
	public test(Class<T> types)
	{
		this.types=types;
	}
	@Override
	public T next() {
		// TODO Auto-generated method stub
		try {
			return types.newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
	public static <T> Gernerator<T> creat(Class<T> type)
	{
		return new test<T>(type);
	}
	public static void main(String[] args) {
		Gernerator<countednumber> gen=test.creat(countednumber.class);
		for(int i=0;i<5;i++)
		{
			System.out.println(gen.next());
		}
	}
}
class<T>是一个类的泛指,也就是一个类的名字,这个名字可以生成类对象(大致可以这么理解),
types.newInstance()
这就是生成类的对象,在next()方法里生成对象,这个泛型类有一个成员是不确定的类,为了调用类生成器的next()方法生成类对象,就需要有一个Gernerator接口类

或者是接口类的子类对象,这里用到了creat方法,传递的参数是一个位置的类名,接下来需要自己定义一个类:

package com;

public class countednumber {
	private static long number=0;
	private final long id=number++;
	public long id()
	{
		return id;
	}
	public String toString()
	{
		return ("countednumber"+" "+id);
	}
}

这个类记录了从开始到结束共创建了多少个类对象,并重载了toString()方法,方便打印输出,这样就实现了在不知道类名的情况下,创建多个未知类名的对象,执行结果

如下所示:

countednumber 0
countednumber 1
countednumber 2
countednumber 3
countednumber 4



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值