java编程思想之接口泛型

接口也可以做泛型编程,例如要实现一个接口Iterface,用到java生成器Gernerator,Iterable,还有迭代器iterator

要实现泛型,必须要实现一个类型,这里就拿车作为一个基类,然后扩展其他的子类,在写代码前需要明确一点

:java里面的for循环会去自动寻找iterator迭代器的方法,并寻找next()和hasnext()方法,知道hasnext()方法

返回false为止,代码如下:

package com;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.Random;

public class PeopleGernerator implements Gernerator<People>,Iterable<People> {
	private Class[] types={America.class,Australia.class,Chinese.class};
	private Random rand=new Random(47);//随机生成器
	public PeopleGernerator(){}
	private int size=0;
	public PeopleGernerator(int cnt)
	{
		size=cnt;
	}
	@Override
	public People next() {
		// TODO Auto-generated method stub
		try{
			return (People) types[rand.nextInt(types.length)].newInstance(); 
		}catch (Exception e) {
			throw new RuntimeException(e);
			// TODO: handle exception
		}
	}
	class PeopleIterator implements Iterator<People>
	{
		private int count=size;
		@Override
		public boolean hasNext() {
			return count>0;
			// TODO Auto-generated method stub
		}

		@Override
		public People next() {
			// TODO Auto-generated method stub
		count--;
		return PeopleGernerator.this.next();
		}

		@Override
		public void remove() {
			// TODO Auto-generated method stub
			throw new UnsupportedOperationException();
		}
	}
	public Iterator<People> iterator()
	{
		return new PeopleIterator();
	}
	public static void main(String args[])
	{
		PeopleGernerator E=new PeopleGernerator();
		for(int i=0;i<5;i++)
		{
			System.out.println(E.next());
		}
		
		PeopleGernerator k=new PeopleGernerator(10);
		System.out.println(k.next());
		
		for(People c:new PeopleGernerator(5) )
		{
			System.out.println(c);
		}
		

	}
}

结果如下:

Chinese 1
Chinese 2
Australia 3
Chinese 4
Australia 5
Chinese 6
Chinese 7
Australia 8
Chinese 9
Australia 10


 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值