很多朋友都想知道java generator是什么?下面就一起来了解一下吧~
java generator就是将泛型应用于接口,接口必须有返回类型为泛型T的next()方法,是一种专门负责创建对象的类。在很多设计模式都会用到(比如工厂方法模式),类似于Iterable对象中使用使用next()不断获得下一个值,这里泛型接口中的next()方法返回创建对象。
2、实现一个CommonGenerator通用生成器
实现一个通用生成器,通过next不断返回一个对象的实例
interface Generator
1 /**2 * Generator泛型接口 3 * @author Jian4 * @param5 */6 public interface Generator {7 T next();8 }
CommonGenerator:
1 /** 2 * CommonGenerator继承Generator泛型接口,实现通过next不断返回实例 3 * @author Jian 4 * @param5 */ 6 public class CommonGenerator implements Generator { 7 private Class type; 8 /** 9 * CommonGenerator Constructor10 * @param type11 */12 public CommonGenerator(Class type) {13 this.type = type;14 }15 /**16 * next()不断返回xxx.class的对象17 */18 @Override19 public T next() {20 try {21 //传入class返回对象22 return type.newInstance();23 } catch (Exception e) {24 throw new RuntimeException(e);25 }26 }27 /**28 * @param type 传入创建类xxx.class29 * @return CommonGenerator实例30 */31 public static Generator create(Class type){32 return new CommonGenerator (type);33 }34 }
TestObject: 1 /** 2 * 测试类:统计返回测试类的引用实例的数目 3 * @author Jian 4 * 5 */ 6 public class TestObject { 7 private static long counter= 0;//统计计数器 8 public String toString() { 9 //注意:这里return中不能用this,否则会出现递归10 return "TestObject " + (counter++);11 }12 }
MainClass:
1 public class MainClass {2 public static void main(String[] args) {3 Generatorgenerator = new CommonGenerator<>(TestObject.class);4 for(int i=0;i<3;i++) {5 //generator.next()返回对象,输出调用toString方法6 System.out.println(generator.next());7 }8 }9 }
输出:
TestObject 0TestObject 1TestObject 2
以上就是小编今天的分享希望可以帮到大家。