接口也可以做泛型編程,例如要實現一個接口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