<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • Java如何使用屬性文件和Reflections動(dòng)態(tài)加載類

            這篇文章給大家分享的是Java使用屬性文件和Reflections動(dòng)態(tài)加載類的方法。小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí)。如下資料是關(guān)于Reflections動(dòng)態(tài)加載類的實(shí)現(xiàn)內(nèi)容。

            創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)由有經(jīng)驗(yàn)的網(wǎng)站設(shè)計(jì)師、開發(fā)人員和項(xiàng)目經(jīng)理組成的專業(yè)建站團(tuán)隊(duì),負(fù)責(zé)網(wǎng)站視覺設(shè)計(jì)、用戶體驗(yàn)優(yōu)化、交互設(shè)計(jì)和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)易于使用并且具有良好的響應(yīng)性。

            MyBirds示例

            讓我們從一個(gè)非常簡(jiǎn)單的問題陳述開始:指定特定鳥的名字后,我應(yīng)該能夠加載它的字符。 例如:當(dāng)我指定鴨子時(shí),調(diào)用sound()函數(shù)應(yīng)顯示“ quack”;

            在這種情況下,你需要根據(jù)客戶端或外部源提供的某些數(shù)據(jù)動(dòng)態(tài)加載類。 你還希望靈活地在簡(jiǎn)單的屬性文件中配置類,并且這些類具有類似的行為。


            為了實(shí)現(xiàn)這一點(diǎn),我們將需要以下組件:

            ·        mybirds.properties——可在其中將鍵映射到類的屬性文件。

            ·        MyBird.java——屬性文件中指定的所有類都必須實(shí)現(xiàn)的接口。

            ·        Duck.java, Eagle.java——實(shí)現(xiàn)接口MyBird的類。

            ·        MyBirdFactory.java——?jiǎng)討B(tài)創(chuàng)建類的工廠類


            讓我們看一下這些代碼。讓我們從mybirds.properties開始。

            1

            2

            3

            #BIRD-TYPE=IMPLEMENTATION-CLASS

            duck=com.foo.Duck

            eagle=com.foo.Eagle


            現(xiàn)在,MyBird.java接口聲明了子類應(yīng)實(shí)現(xiàn)的方法。

            1

            2

            3

            4

            5

            6

            7

            8

            package com.foo;

             

            /**

             * http://www.janeve.me

             */

            public interface MyBird {

                public String sound();

            }


            現(xiàn)在讓我們看看Duck.java和Eagle.java。

            1

            2

            3

            4

            5

            6

            7

            8

            9

            10

            11

            package com.foo;

             

            /**

             * http://www.janeve.me

             */

            public class Duck implements MyBird {

             

                public String sound() {

                    return "Quack";

                }

            }

             

            1

            2

            3

            4

            5

            6

            7

            8

            9

            10

            11

            12

            package com.foo;

             

            /**

             * http://www.janeve.me

             */

            public class Eagle implements MyBird {

             

                public String sound() {

                    return "Scream";

                }

             

            }


            MyBirdFactory.java是負(fù)責(zé)根據(jù)傳遞給它的birdType輸入創(chuàng)建所需實(shí)例的類。.

            1

            2

            3

            4

            5

            6

            7

            8

            9

            10

            11

            12

            13

            14

            15

            16

            17

            18

            19

            20

            21

            22

            23

            24

            25

            26

            27

            28

            29

            30

            31

            32

            33

            34

            35

            36

            37

            38

            39

            40

            41

            42

            43

            44

            45

            46

            47

            48

            package com.foo;

             

            import java.util.Enumeration;

            import java.util.Hashtable;

            import java.util.Locale;

            import java.util.ResourceBundle;

             

            /**

             * http://www.janeve.me

             */

            public class MyBirdFactory {

             

                private static final String MY_BIRDS_CONFIGURATION = "mybirds";

                private static Hashtable<String, String> myBirdsMappings = new Hashtable<String, String>();

             

                static {

                    try {

                        loadMyBirdsrMappings();

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

                }

             

                public static MyBird getMyBird(String birdType) {

                    String className = myBirdsMappings.get(birdType);

             

                    MyBirdbird = null;

             

                    try {

                        if( className!=null) {

                            Class cls = Class.forName(className);

                            bird = (MyBird)cls.newInstance();

                        }

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

             

                    return bird;

                }

             

                private static void loadMyBirdsrMappings() {

                    ResourceBundlerb = ResourceBundle.getBundle(MY_BIRDS_CONFIGURATION, Locale.getDefault());

                    for (Enumeration e = rb.getKeys(); e.hasMoreElements();) {

                        String key = (String) e.nextElement();

                        myBirdsMappings.put(key, rb.getString(key));

                    }

                }

            }


            確保MY_BIRDS_CONFIGURATION的值與屬性文件的名稱相同。


            我們可以編寫TestCode.java來測(cè)試代碼。

            1

            2

            3

            4

            5

            6

            7

            8

            9

            10

            11

            12

            13

            14

            15

            16

            17

            18

            19

            20

            21

            22

            23

            24

            25

            package com.foo;

             

            /**

             * http://www.janeve.me

             */

            public class TestCode {

             

                public static void main(String[] args) {

                    if(args.length <=0)

                        System.out.println("Please provide input. E.G: duck eagle duck ...");

                    else {

                        for(String name:args){

                            MyBirdbird = MyBirdFactory.getMyBird( name );

                            if(bird == null){

                                System.out.println("Couldn't find your bird. Please make sure it's entered in   mybirds.properties");

                            } else {

                                System.out.println("The sound of the bird"  + name + " is " + bird.sound() );

                            }

             

                        }

                    }

             

                }

             

            }


            運(yùn)行代碼時(shí)簽出輸出。

            1

            2

            3

            4

            5

            6

            7

            8

            9

            C:\Janeve\MyBirds>java -classpath ./ com.foo.TestCode duck duck eagle duck eagle   eagle

            The   sound of the bird duckis Quack

            The   sound of the bird duckis Quack

            The   sound of the bird eagleis Scream

            The   sound of the bird duckis Quack

            The   sound of the bird eagleis Scream

            The   sound of the bird eagleis Scream

             

            C:\Janeve\MyBirds>

            如你所見,這些類是根據(jù)你的輸入加載的。

            上文描述的就是Java使用屬性文件和Reflections動(dòng)態(tài)加載類的方法,具體使用情況還需要大家自己動(dòng)手實(shí)驗(yàn)使用過才能領(lǐng)會(huì)。如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

            文章題目:Java如何使用屬性文件和Reflections動(dòng)態(tài)加載類
            網(wǎng)頁路徑:http://www.jbt999.com/article30/jhdeso.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、品牌網(wǎng)站制作網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣、建站公司、網(wǎng)站營(yíng)銷

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

            網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 欧美亚洲影院 | 被黑人猛躁1O次高潮 | 亚洲无码av高清 亚洲无码av观看 | 可 尻屄网站 | 亚洲AV无码成人精品区欧洲 |