ele*_*ven 3 java generics object-oriented-analysis
详细解释Java泛型类的以下两个版本之间的差异(如果有)?
class C<T>{
T x;
void foo(T y) { … }
}
Run Code Online (Sandbox Code Playgroud)
和
class C<T>{
T x;
<T> void foo(T y) { … }
}
Run Code Online (Sandbox Code Playgroud)
还有一个问题:什么可以写在foo()的主体中,取代导致Java编译器接受C的第一个版本但拒绝C的第二个版本的"...".
我很困惑.
tru*_*ity 10
class C<T>{
T x;
<T> void foo(T y) { … }
}
Run Code Online (Sandbox Code Playgroud)
是一种令人困惑的写作方式
class C<T>{
T x;
<S> void foo(S y) { … }
}
Run Code Online (Sandbox Code Playgroud)
至于什么会拒绝第二个版本,例如:
class C<T>{
T x;
<T> void foo(T y) { x = y; }
}
Run Code Online (Sandbox Code Playgroud)
会失败,因为如果你把它重写为
class C<T>{
T x;
<S> void foo(S y) { x = y; }
}
Run Code Online (Sandbox Code Playgroud)
您可以立即看到您错过了演员表(确切的编译器错误是"不兼容的类型").
| 归档时间: |
|
| 查看次数: |
474 次 |
| 最近记录: |