1
我有一对夫妇从一个泛型类型转换为另一种方法的类,但我想回到原来的值,如果两个:参数类型和返回类型是相同的。我能想到的最佳选择是将参数类型转换并将其包装在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;
}
有没有其他办法?
当心类型擦除。 – SLaks
我不认为这些方法中的任何一种都可以实际工作。我怀疑你太喜欢了。 –