很多朋友都想知道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
以上就是小編今天的分享希望可以幫到大家。