亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何使用屬性文件和Reflections動態加載類

發布時間:2020-06-02 21:25:16 來源:億速云 閱讀:255 作者:Leah 欄目:編程語言

這篇文章給大家分享的是Java使用屬性文件和Reflections動態加載類的方法。小編覺得挺實用的,因此分享給大家學習。如下資料是關于Reflections動態加載類實現內容。

MyBirds示例

讓我們從一個非常簡單的問題陳述開始:指定特定鳥的名字后,我應該能夠加載它的字符。 例如:當我指定鴨子時,調用sound()函數應顯示“ quack”;

在這種情況下,你需要根據客戶端或外部源提供的某些數據動態加載類。 你還希望靈活地在簡單的屬性文件中配置類,并且這些類具有類似的行為。


為了實現這一點,我們將需要以下組件:

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

·         MyBird.java ——屬性文件中指定的所有類都必須實現的接口。

·         Duck.java, Eagle.java ——實現接口MyBird的類。

·         MyBirdFactory.java ——動態創建類的工廠類


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

1

2

3

#BIRD-TYPE=IMPLEMENTATION-CLASS

duck=com.foo.Duck

eagle=com.foo.Eagle


現在,MyBird.java接口聲明了子類應實現的方法。

1

2

3

4

5

6

7

8

package com.foo;

 

/**

 * http://www.janeve.me

 */

public interface MyBird {

    public String sound();

}


現在讓我們看看Duck.javaEagle.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是負責根據傳遞給它的birdType輸入創建所需實例的類。.

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);

 

        MyBird bird = 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() {

        ResourceBundle rb = 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來測試代碼。

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){

                MyBird bird = 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() );

                }

 

            }

        }

 

    }

 

}


運行代碼時簽出輸出。

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 duck is Quack

The   sound of the bird duck is Quack

The   sound of the bird eagle is Scream

The   sound of the bird duck is Quack

The   sound of the bird eagle is Scream

The   sound of the bird eagle is Scream

 

C:\Janeve\MyBirds>

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

上文描述的就是Java使用屬性文件和Reflections動態加載類的方法,具體使用情況還需要大家自己動手實驗使用過才能領會。如果想了解更多相關內容,歡迎關注億速云行業資訊頻道!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥江县| 苍梧县| 抚顺县| 泰来县| 赤峰市| 福泉市| 徐闻县| 连山| 株洲县| 五台县| 洪雅县| 海兴县| 靖安县| 托里县| 鄂伦春自治旗| 沂南县| 荔浦县| 汉阴县| 河间市| 洛阳市| 潼南县| 潞西市| 平果县| 保靖县| 桂阳县| 诸城市| 蒲城县| 增城市| 抚松县| 秦皇岛市| 通辽市| 报价| 仪陇县| 依兰县| 皮山县| 彭州市| 迁西县| 京山县| 罗甸县| 隆德县| 城市|