IT科技

當前位置 /首頁/IT科技 > /列表

generator,java

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

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

java generator就是將泛型應用於接口,接口必須有返回類型為泛型T的next()方法,是一種專門負責創建對象的類。在很多設計模式都會用到(比如工廠方法模式),類似於Iterable對象中使用使用next()不斷獲得下一個值,這裏泛型接口中的next()方法返回創建對象。

java generator

2、實現一個CommonGenerator通用生成器

實現一個通用生成器,通過next不斷返回一個對象的實例

interface Generator

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

CommonGenerator:

1 /** 2  * CommonGenerator繼承Generator泛型接口,實現通過next不斷返回實例 3  * @author Jian 4  * @param <T> 5  */ 6 public class CommonGenerator<T> implements Generator<T>{ 7     private Class<T> type; 8     /** 9      * CommonGenerator Constructor10      * @param type11      */12     public  CommonGenerator(Class<T> 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 <T> Generator<T> create(Class<T> type){32         return new CommonGenerator<T>(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<TestObject> 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

TAG標籤:java generator #