java generator

作者:原创时间:2022-03-31
文档

很多朋友都想知道java generator是什么?下面就一起来了解一下吧~

java generator就是将泛型应用于接口,接口必须有返回类型为泛型T的next()方法,是一种专门负责创建对象的类。在很多设计模式都会用到(比如工厂方法模式),类似于Iterable对象中使用使用next()不断获得下一个值,这里泛型接口中的next()方法返回创建对象。

2、实现一个CommonGenerator通用生成器

实现一个通用生成器,通过next不断返回一个对象的实例

interface Generator

1 /**2  * Generator泛型接口 
3  * @author Jian4  * @param 5  */6 public interface Generator {7     T next();8 }

CommonGenerator:

1 /** 2  * CommonGenerator继承Generator泛型接口,实现通过next不断返回实例 3  * @author Jian 4  * @param  5  */ 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         Generator generator = 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

以上就是小编今天的分享希望可以帮到大家。

显示全文
java enhancer java generic java enterprise java environment java epoll java error java escape java event java exchange java execute 微信群怎么找 怎么导出微信聊天记录 苹果手机怎么恢复出厂设置 qq怎么清理缓存和垃圾清理 朋友圈怎么转发 微信分组怎么删除 两个excel如何独立显示 excel怎么排序 计算机管理怎么打开 java jep java future java encapsulation java empty java email java ehcache java echarts java formatter java ecc加密 java fork java foreach循环 java ear java flume java dynamic java dto java drools java flink java dowhile java flatmap java findfirst java fileinputstream