XMLリテラルとかプロパティアクセッサはいいから、こんなのが欲しい。
Listアクセス
Listの要素を配列と同じ形で操作
ArrayListlist = new ArrayList(); list.add("apple"); list.add("grape"); list.add("lemon");
があるときに
System.out.println(list[2]);
で"lemon"を表示。実際には
System.out.println(list.get(2));
に展開(さらにnew Integerに展開される)
あと
list[1] = "orange";
を
list.set(1, "orange");
に展開
と思ったけど式(list[1] = "orange")が"orange"を返すようにしないといけないのでCollectionsあたりにメソッドを追加して
Collections.listAssign(list, 1, "orange");
なんかに展開。listAssignメソッドは3番目の引数をそのまま返す。
Mapアクセス
Mapの要素を配列と同じ形で操作
HashMapmap = new HashMap(); map.put("apple", "りんご"); map.put("grape", "ぶどう");
があるときに
System.out.println(map["apple"]);
で"りんご"を表示。実際には
System.out.println(map.get("apple"));
に展開される。
あと、
map["lemon"] = "レモン";
を
map.put("lemon", "レモン");
に展開。
と思ったけど、これも式(map["lemon"] = "レモン")が"レモン"を返すようにしないといけないのでCollectionsあたりにメソッドを追加して
Collections.mapAssign(map, "lemon", "レモン");
なんかに展開。mapAssignメソッドは3番目の引数をそのまま返す。
Listリテラル
配列と同じ書式で初期化。
ArrayListlist = new ArrayList(); list.add(1); list.add(2); list.add(3);
を
ArrayListlist = {1, 2, 3};
と書ける。初期化以外の場合では
list = new ArrayList{1, 2, 3};
と書く。この場合も、=演算子の右辺が=演算子の値にならないといけないので実際にはCollectionsあたりにメソッドを追加して
list = Collections.listInitialize( new ArrayList(), new Object[]{1, 2, 3});
などと展開する。
Mapリテラル
配列と同じ書式で初期化。
HashMapmap = new HashMap(); m.put("apple", "りんご"); m.put("grape", "ぶどう");
を
HashMapmap = {"apple":"りんご", "grape":"ぶどう"};
と書ける。初期化以外の場合では
map = new HashMap{"apple":"りんご", "grape":"ぶどう"};
などと書く。やっぱり代入式のためにCollectionsあたりにメソッドを追加して
map = Collections.mapInitialize(
new HashMap(),
new Object{"apple", "grape"},
new Object{"りんご", "ぶどう"});
コンストラクタリテラル
変数の初期化時に、コンストラクタのクラス名の記述を省略
Point p = new Point(120, 115);
を
Point p = new(120, 115);
と記述。または
Point p = [120, 115];
と記述。new演算子を使わないなら、「(...)」の場合に単値とあいまいになり、「{...}」の場合はArrayListのときにListリテラルとコンストラクタ呼び出しを区別できない。
JButton b = ["押してね"];
とか書けると結構ステキ。
JFileChooser chooser = [];
とか書けるのもステキ。
そうすると
ArrayListpoints = {[10, 15], [120, 44], [100, 20]};
などと書ける。
HashMap> surfaces = { {"三角":{[10, 15], [120, 44], [100, 20]}}, {"四角":{[10, 15], [120, 20], [100, 80], [6, 70]}}};
などとも書ける。配列を使って
HashMapsurfaces = { {"三角":{[10, 15], [120, 44], [100, 20]}}, {"四角":{[10, 15], [120, 20], [100, 80], [6, 70]}}};
などとも書ける。