あるジェネリック型から別のジェネリック型に変換するいくつかのメソッドを持つクラスがありますが、引数の型と戻り値の型が同じ場合は元の値を返したいと考えています。私が思いついた最良のオプションは、引数の型をキャストし、それを try catch ステートメントでラップすることでしたが、それは私には汚いように思えます。
public WK wrapKey(K key) {...
public abstract class MyClass<K, V extends Comparable, WK, WV> extends BaseClass<Map<WK, WV>, KeyValueBean<K, V>> {
...
public WK wrapKey(K key) {
try {
return (WK) key;
} catch (Exception e) {
return null;
}
}
public WV wrapValue(V value) {
try {
return (WV) value;
} catch (Exception e) {
return null;
}
}
もう 1 つのオプションは、クラスの型をコンストラクターまたはセッター メソッドの引数として指定し、次に isAssignableFrom を使用することであると考えました。
public WV wrapValue(V value) {
if (value.class.isAssignableFrom(this.getWrappedValueClass())){
return WK(V);
}
return null;
}
他の方法はありますか??