Javaに触る機会ができたので渋々勉強します。今回はHashMapクラスで、要は合言葉(key)で値を取り出す連想配列です。
1.とりあえず触ってみる
vsCodeの拡張のせいで連想配列のメソッドの引数にラベル(key,value)がついてしまっていますが本来は無い想定で。
Map<Integer, String> map = new HashMap<>()
と初期化したので、今回はキーはInteger型で値はString型です。
注)コールバック関数…引数に指定された別の関数。画像では使い捨てのラムダ式を使用。
removeメソッドは存在しないキーを指定しても例外などは発生しない(nullを返す)。
2.キーと値の型を指定しない場合はObject型になるらしい
2.1 なんでも入るぞ
標題の通り、型を指定しない場合はkeyもvalueもObject型となります。Object型はすべてのクラスの基底クラスなので、
つまり、この場合は連想配列にはなんでも追加できることになります。
画像でもvalueにBooleanやString,int,自作のクラスも入れることができます。
もちろんkeyにもあらゆる型を代入可能。
2.2 キャストしないとね
当然ですがObject型で連想配列を使用している場合は型独自のメソッドなどは参照できないのでキャストする必要があります。
結局、Object型のHashMapを利用すれば複数の型・戻り値でreturnできるというわけですが、
なんでもObject型で解決するなら静的型付け言語の意味なくないですかね?