<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### [使用類字面量](https://lingcoder.gitee.io/onjava8/#/book/19-Type-Information?id=%e4%bd%bf%e7%94%a8%e7%b1%bb%e5%ad%97%e9%9d%a2%e9%87%8f) 如果我們使用類字面量重新實現`PetCreator`類的話,其結果在很多方面都會更清晰: ~~~ // typeinfo/pets/LiteralPetCreator.java // 使用類字面量 // {java typeinfo.pets.LiteralPetCreator} package typeinfo.pets; import java.util.*; public class LiteralPetCreator extends PetCreator { // try 代碼塊不再需要 @SuppressWarnings("unchecked") public static final List<Class<? extends Pet>> ALL_TYPES = Collections.unmodifiableList(Arrays.asList( Pet.class, Dog.class, Cat.class, Rodent.class, Mutt.class, Pug.class, EgyptianMau.class, Manx.class, Cymric.class, Rat.class, Mouse.class, Hamster.class)); // 用于隨機創建的類型: private static final List<Class<? extends Pet>> TYPES = ALL_TYPES.subList(ALL_TYPES.indexOf(Mutt.class), ALL_TYPES.size()); @Override public List<Class<? extends Pet>> types() { return TYPES; } public static void main(String[] args) { System.out.println(TYPES); } } ~~~ 輸出結果: ~~~ [class typeinfo.pets.Mutt, class typeinfo.pets.Pug, class typeinfo.pets.EgyptianMau, class typeinfo.pets.Manx, class typeinfo.pets.Cymric, class typeinfo.pets.Rat, class typeinfo.pets.Mouse, class typeinfo.pets.Hamster] ~~~ 在即將到來的`PetCount3.java`示例中,我們用所有`Pet`類型預先加載一個`Map`(不僅僅是隨機生成的),因此`ALL_TYPES`類型的列表是必要的。`types`列表是`ALL_TYPES`類型(使用`List.subList()`創建)的一部分,它包含精確的寵物類型,因此用于隨機生成`Pet`。 這次,`types`的創建沒有被`try`塊包圍,因為它是在編譯時計算的,因此不會引發任何異常,不像`Class.forName()`。 我們現在在`typeinfo.pets`庫中有兩個`PetCreator`的實現。為了提供第二個作為默認實現,我們可以創建一個使用`LiteralPetCreator`的*外觀模式*: ~~~ // typeinfo/pets/Pets.java // Facade to produce a default PetCreator package typeinfo.pets; import java.util.*; import java.util.stream.*; public class Pets { public static final PetCreator CREATOR = new LiteralPetCreator(); public static Pet get() { return CREATOR.get(); } public static Pet[] array(int size) { Pet[] result = new Pet[size]; for (int i = 0; i < size; i++) result[i] = CREATOR.get(); return result; } public static List<Pet> list(int size) { List<Pet> result = new ArrayList<>(); Collections.addAll(result, array(size)); return result; } public static Stream<Pet> stream() { return Stream.generate(CREATOR); } } ~~~ 這還提供了對`get()`、`array()`和`list()`的間接調用,以及生成`Stream<Pet>`的新方法。 因為`PetCount.countPets()`采用了`PetCreator`參數,所以我們可以很容易地測試`LiteralPetCreator`(通過上面的外觀模式): ~~~ // typeinfo/PetCount2.java import typeinfo.pets.*; public class PetCount2 { public static void main(String[] args) { PetCount.countPets(Pets.CREATOR); } } ~~~ 輸出結果: ~~~ Rat Manx Cymric Mutt Pug Cymric Pug Manx Cymric Rat EgyptianMau Hamster EgyptianMau Mutt Mutt Cymric Mouse Pug Mouse Cymric {EgyptianMau=2, Pug=3, Rat=2, Cymric=5, Mouse=2, Cat=9, Manx=7, Rodent=5, Mutt=3, Dog=6, Pet=20, Hamster=1} ~~~ 輸出與`PetCount.java`的輸出相同。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看