Java反射は属性ファイルと結合して工場モードを実現します。


属性ファイルの形式で配置するために必要なサブクラスは、まず一つのfright.propertiesのリソースファイルの内容を作成します。apple=Reflect.Apple orange=Reflect.Orangeです。
そしてメインコードを作成します。
//  :    : ,        ;  
//          ,       ,         。    。
interface Fruit {
    void eat();
}

class Apple implements Fruit {
    public void eat() {
        System.out.println("Apple");
    }
}

class Orange implements Fruit {
    public void eat() {
        System.out.println("Orange");
    }
}

//       
class Init {
    public static Properties getPro() throws IOException {
        Properties pro = new Properties();
        File f = new File("fruit.properties");
        if (f.exists()) {
            pro.load(new FileInputStream(f));
        } else {
            pro.setProperty("apple", "Reflect.Apple");
            pro.setProperty("orange", "Reflect.Orange");
            pro.store(new FileOutputStream(f), "FRUIT CLASS");
        }
        return pro;
    }
}

class Factory {
    public static Fruit getInstance(String className) {
        Fruit f = null;
        try {
            f = (Fruit) Class.forName(className).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return f;
    }
}

class Hello {
    public static void main(String[] a) throws IOException {
        Properties pro = Init.getPro();
        Fruit f = Factory.getInstance(pro.getProperty("apple"));
        if (f != null) {
            f.eat();
        }
    }
}
【運転結果】:Apple
ここでは以前に見たプロファイルを説明できます。propertiesという配置ファイルは何ですか?
おそらくこのように使って、ファイルの配置を読んで、配置ファイルの方式を変えて簡単に任務を完成します。データを接続する配置もこのようにします。
mono.properties
memcached.properties
map.properties
default_settings.properties
quartz.properties
私のこのプロジェクトの中でこのようないくつかのpropertiesタイプのファイルを見ましたが、これらはいくつかのシステム構成が保存されていますか?
なるほど
Apple apple=(Apple)f
咳と咳、これはだめです。人は無理して男に転じることができます。なぜ自分で推測しますか?
コンパイルする時は間違いなくて、運行する時破裂して、これも多状態の1つのよく聞く問題です。言うまでもないです
上のコードに問題があります。テストコードですが、中のファイルの流れは正確に閉じられていません。観衆のあなたが発見したかどうかは分かりません。私も振り返ってこれを見た時に発見しました。あるいはどのように正しいファイルの流れをオフにするかを知ってから、これを見れば問題があります。具体的には以下の文章を見てリンクします。
Javaはどのように正確にtry catch finallyを使ってファイルフローのまとめを閉じますか?