接口也可以做泛型编程,例如要实现一个接口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