2012-04-22 2 views
1

laodメソッドを個別に呼び出さずにJavaでプロパティファイルを読み込む方法 プロパティオブジェクト自体のインスタンス化中にファイルをロードします。 私は下にペーストしたようですが、私はそれに成功することができません。個別にlaodメソッドを呼び出さずにJavaでプロパティファイルを読み込む方法

class test{ 
Properties configFile = new Properties(load(new FileInputStream("config.properties")); 
} 
+1

混乱がある場合に備えて、ランダムな文を一緒に投げてプログラミングすることはできません。なぜ、それを「単一の行」で行うことに興味があるのですか?想定される利点は何ですか? –

+0

私はそれをコンストラクタなどで行うのではなく、フィールドに完全にインスタンス化することも考えています。状況に応じて、テスト、単純なプログラムなどのために、それはOKかもしれないと思います。 –

+0

実際には、メソッドの外で初期化したいのですが、変数が宣言されている場所を意味しています。私は間違っている...私はちょうどそれを行うことが可能です知りたいですか? – sarsarahman

答えて

5

を追加する必要があります場合は、例外をスローする可能性があります - 潜在的にあなたが他の場所で使用できるヘルパークラスで:

public class PropertiesHelper { 
    public static Properties loadFromFile(String file) throws IOException { 
     Properties properties = new Properties(); 
     FileInputStream stream = new FileInputStream(file); 
     try { 
      properties.load(stream); 
     } finally { 
      stream.close(); 
     } 
     return properties; 
    } 
} 

注意をIOExceptionの可能性があるため、あなたはこれをどこから呼び出すかには注意が必要です。インスタンスイニシャライザで使用する場合は、すべてのコンストラクタがIOExceptionをスローすることができることを宣言する必要があります。

+0

私はこのメソッドをコピーしてクラスの中に貼り付け、そのメソッドを 'Properties config = loadFromFile(" config.properties ");'として呼び出しましたが、エラー '未報告の例外java.io.IOException;つかまえられなければならない」と宣告されなければならない。 – sarsarahman

+1

@ S.A.Rahman:あなたは私の答えの最後の段落を読んだか? –

+0

(基本的には、すべてのコンストラクタがIOExceptionをスローすることを宣言する必要があります。つまり、パラメータのないコンストラクタが必要な場合は、自分で宣言する必要があります)。 –

2

本の線に沿って何か:

class Test { 
    Properties configFile = new Properties() {{ load(new FileInputStream("config.properties")); }}; 
} 

あなたが実際にここにクラス分けのプロパティをサブとその初期化セクションを使用しています。 負荷(..)ので、あなたはちょうどそれをするために別の方法を作成try { ... } catch() {}

+0

はい私はこれを試してみましたが、私はこれは良い練習であることを知りたいですか? – sarsarahman

+0

通常はそうではありませんが、エラー処理(フォールバックなし、回復なし、エラーメッセージなしなど)はありません。時には読むのが少し難しいかもしれませんし、あなたのコードでシリアライズ警告を得るかもしれません(Serializableクラスをサブクラス化すると読みにくくなり、それを修正しようとする時など)。あなたはI/Oをやっていますが、これは誤りが多いことがよくあります。しかし単体テストや小さなテストプログラムなどであれば、それはもちろん間違いないでしょう。 –

+1

これまで言及したことがありますが、 'Class test {'はJavaのキーワードと共通のJava命名法を考慮して 'class Test {'でなければなりません。 –

関連する問題