さまざまな Java 型 (文字列、ブール値など) の値を一緒に保持するコンテナー オブジェクトが正しく作成されていません。
public class BadlyCreatedClass {
public Object get(String property) {
...;
}
};
そして、この方法で値を抽出します
String myStr = (String) badlyCreatedObj.get("abc");
Date myDate = (Date) badlyCreatedObj.get("def");
このオブジェクトを使用して新しいコードを作成する必要があり、これを行うためのクリーンな方法があるかどうかを確認しようとしています。より具体的には、以下のどの方法が好ましいですか?
明示的なキャスト
String myStr = (String) badlyCreatedObj.get("abc")
Date myDate = (Date) badlyCreatedObj.get("def");
ジェネリックキャストの使用
public <X> X genericGet(String property) {
}
public String getString(String property) {
return genericGet(property);
}
public Date getDate(String property) {
return genericGet(property);
}
Class.cast の使用
<T> T get(String property, Class<T> cls) {
;
}
私はSO Javaジェネリック関数に関するいくつかの関連する質問を経験しました:ジェネリック型を返す方法、Javaジェネリック戻り型はすべて、そのような型キャストは危険であると言っているようですが、どのメソッドがあなたが好きですか?
ありがとう