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


 





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章