我碰巧看到了java.util.Collections類。一個不能實例化這個類。我想這是由於存在一個私人Constructor。何時使用不可實例化的類而不是枚舉?
的實例可以則在此創建way-
Class collections = java.util.Collections.class;
Constructor cons = collections.getDeclaredConstructor();
cons.setAccessible(true);
Collections instance = (Collections) cons.newInstance();
首先爲什麼沒有在Java API的創造者停止這種行爲?
它使被覺得我應該何時真的喜歡一個非實例級以上的枚舉?
這是兩個完全不同的問題。第一個問題的答案是Java的反射讓你打破了一些Java規則。這是設計。如果你用反射來破壞規則,期望被你打破的東西咬傷。第二個問題是以意見爲基礎,因此是焦點話題。 –
'Collections':自java 1.2;枚舉:自java 5; '2 <5' – fabian
也許他們應該在該私有構造函數中拋出Exception –