java,generator
<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()方法返回創建對象。
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
-
攝像頭怎麼連接手機,一文讓你秒懂
1、攝像頭用網線連上路由器,通電,電腦也連接在同一路由並安裝客戶端軟件。2、用攝像頭的搜索工具搜索到攝像頭IP,把該IP改成與路由器同一網段保存。之後在IE欄輸入該攝像頭IP進入WEB端界面進行簡單設置。3、進入路由進行端口映射,若攝像頭是P2P功能的,此步可以省略...
-
微博怎麼取消手機型號
1、點擊設置圖標:首先需要打開手機上的微博軟件,在微博我的頁面裏點擊設置圖標。2、點擊會員專屬設置:然後在手機微博設置裏,找到並點擊會員專屬設置。3、點擊微博來源:然後在會員專屬設置頁面,找到個性設置裏的微博來源。4、點擊不顯示:最後在微博來源設置頁面中,設置...
-
蘋果手機相冊怎麼上鎖,蘋果手機相冊怎樣上鎖
1、在手機上下載騰訊手機管家APP,下載完畢點擊打開。2、進入手機管家後,選擇相冊管理。3、點擊加密相冊並進入。4、第一次進入加密相冊會要設置一個個人密碼,或者用戶可以通過指紋識別進入相冊。5、輸入密碼後,密碼如果正確,相冊會自動打開。6、進入相冊後,點擊添加,...
-
黑色背景拍照竅門詳解
1、調整拍攝角度,尋找背景:既然是拍攝黑背景,在拍攝前我們儘量選擇深色的背景,這樣也就更加容易達到效果。不過深色不一定要是純黑色,只要顏色較爲深沉,偏向暗色調的均可。拍攝前多多觀察,尋找不同的拍攝角度,以找到有反差的深色作爲背景。要多嘗試不同的角度,直至主體...