Eclipse + Subversion
ジェネリックス
型名をクラスやメソッドにつけることで、汎用的なクラスやメソッドを特定の型に対応付ける機能。
今までの問題点
- コレクションが返すのがObjectインスタンスの場合、ソースコード上ではあらゆる型にキャスト出来ます。開発者はこのObjectインスタンスが、StringなのかIntegerなのかを理解しているかも知りませんが、第3者はわかりません。
この場合、誤ったキャストでもコンパイルは通ってしまい、実行時に例外が発生することになります。
型の安全性
型はコンパイル時に型検査が行われる。コンパイルに成功したプログラムは、実行時に型に関するエラーが発生しないことを目標としている。
従来のコード
Map map = new TreeMap(); String s = (String)map.get("key1"); Integer i = (Integer)map.get("key1"); //誤ったキャストでもコンパイルが通る
ジェネリックスを使ったコード
Map<String, String> map = new TreeMap<String, String>(); String s = map.get("key"); //キャスト不要。 Integer i = map.get("key"); //コンパイル時にエラー発生
Java5.0のdocを見ると、以下のように定義されている。
インタフェース Map<K,V>
クラス TreeMap<K,V>
プロパティファイルを触ってみよう
メリット:再コンパイルしなくても、値の変更を反映させることが出来る。
- java.util.Propertiesクラス
サンプルコード1
TestProperty.java
Properties prop = new Properties(); InputStream is = new FileInputStream(new File("test.properties")); prop.load(is); prop.getProperty("test1");
test.properties
test1=a test2=b
メモ
オブジェクトのコピー
http://www.javaroad.jp/java_array2.htm