我有一个类,其中包含几个从一种泛型类型转换为另一种泛型类型的方法,但如果两者都返回原始值:参数类型和返回类型相同。我能想到的最佳选择是转换参数类型并将其包装在 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;
}
}
我认为另一种选择可能是将类类型指定为构造函数或setter方法中的参数,然后使用isAssignableFrom:
public WV wrapValue(V value) {
if (value.class.isAssignableFrom(this.getWrappedValueClass())){
return WK(V);
}
return null;
}
有没有别的办法??