0
私はオブジェクトのコレクションを持っている:のJava - ユニバーサルゲッター
public LinkedHashMap<String, Object> objectList;
を、私はこの方法で文字列値、または整数値を取得したい:
public Object getValue(String key) {
if (objectList.get(key) instanceof String) {
return ((String) objectList.get(key));
}
}
私はこれを使いたい、後ゲッター:
String value = getValue("someKey");
しかし、これはうまくいかず、理由はわかりません。 getterはObjectを返しますが、これがStringのインスタンスであれば、Stringにキャストします。
なぜ動作しないのですか?または他の解決策。
ありがとうございました。
メソッドの戻り値の型は 'Object'なので、メソッド内部で何をしても、参照型は' Object'になります。この場合、返された後に 'String'にキャストしなければなりません。 – Zircon
あなたはそれをStringにキャストしたと思いますか?あなたはそうしない。 'public T getValue(String key)'と書くこともできます。すると、キャストする必要はありません。メソッドの実装は 'return(T)objectList.get(key);とします。 –
値が文字列でない場合、何も返さないので、このコードはコンパイルされません。また、より良い名前を選択する必要があります:objectListはMapではなくListを参照する必要があります。 –