Pim*_*kos 5 java stack-overflow covariance contravariance typechecking
昨天在一次研讨会上,主持人(Peter Sestoft)展示了一个小型的java程序,有3个类,同时具有协方差和反差.尝试使用javac进行编译时,类型检查器将抛出StackOverflowException.
该片段是由一些在微软工作的人开发的(想想一个叫做肯尼迪).
无法使用Google找到它.有没有人知道代码片段,你可以在这里粘贴它(最多10行代码),供大家看吗?:)
这很有趣......
找到了(主持人问)!StackOverflowException6.0 和 7.0 中都有:
class T { }
class N<Z> { }
class C<X> extends N<N<? super C<C<X>>>> {
N<? super C<T>> cast(C<T> c) { return c; }
}
Run Code Online (Sandbox Code Playgroud)
它来自安德鲁·肯尼迪和本杰明·皮尔斯:关于带方差的名义子类型的可判定性。面向对象语言的基础和发展国际研讨会 g(FOOL/WOOD'07),法国尼斯,2007 年。