【发布时间】:2010-02-04 06:04:03
【问题描述】:
泛型为 java 带来了很多好处,但它们也意味着麻烦,因为引入了桥接方法,这意味着很难找到给定名称和目标的方法,因为擦除和桥接方法意味着客户端实际上使用桥接而不是比目标。
方法的返回类型已被省略,因为它们对于这个问题并不重要...
class Super{
}
class Sub extends Super{
}
interface Interface<T extends Super>{
method( T t ); // erased -> method( Super super );
}
interface Interface2 extends Interface<T extends Sub>{
method2( T t ); // erased -> method2( Sub sub );
}
class Concrete implements Interface2{
method( Sub sub ); // erased to method( Super super);
method2( Sub sub );
}
我如何以编程方式确定 Concrete.method(Super) 最终调用 Concrete.method(Sub) ?我想避免基于参数化类型的计算,因为这会很快变得复杂......
我看过 Springs BridgeMethodResolver,但它相当复杂,而且做了很多事情,肯定有更简单的方法..也许没有..
【问题讨论】: