Java泛型类中的void foo(T y)和void foo(T y)之间的区别
发布时间:2020-12-15 04:57:38 所属栏目:Java 来源:网络整理
导读:详细解释 Java泛型类的以下两个版本之间的差异(如果有)? class CT{ T x; void foo(T y) { … }} 和 class CT{ T x; T void foo(T y) { … }} 还有一个问题:什么可以写在foo()的主体中,取代导致Java编译器接受C的第一个版本但拒绝C的第二个版本的“…”. 我
详细解释
Java泛型类的以下两个版本之间的差异(如果有)?
class C<T>{ T x; void foo(T y) { … } } 和 class C<T>{ T x; <T> void foo(T y) { … } } 还有一个问题:什么可以写在foo()的主体中,取代导致Java编译器接受C的第一个版本但拒绝C的第二个版本的“…”. 我很困惑. 解决方法class C<T>{ T x; <T> void foo(T y) { … } } 是一种令人困惑的写作方式 class C<T>{ T x; <S> void foo(S y) { … } } 至于什么会拒绝第二个版本,例如: class C<T>{ T x; <T> void foo(T y) { x = y; } } 会失败,因为如果你把它重写为 class C<T>{ T x; <S> void foo(S y) { x = y; } } 您可以立即看到您错过了演员表(确切的编译器错误是“不兼容的类型”). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |