我有一个带有静态字段F的A类:
class A {
public static String F = null;
}
Run Code Online (Sandbox Code Playgroud)
B级:
class B extends A {
public static String F = "somestring";
}
Run Code Online (Sandbox Code Playgroud)
和一个使用字段F的方法的类型化的类:
class C<T extends A> {
public void someMethod() {
String someString = T.F;
// Manipulations with someString
}
}
Run Code Online (Sandbox Code Playgroud)
然后我的代码调用它.
C<B> c = new C<B>();
c.someMethod();
Run Code Online (Sandbox Code Playgroud)
当我尝试使用someString进行操作时,我得到一个空指针异常.所以,TF是null,但是T是B,所以它应该是"somestring"!为什么?
小智 7
您无法覆盖字段.由于它是扩展A,它将始终使用A中的字段.
在A类和B类中添加一个返回F的getter.从那里,用A中的方法覆盖A中的方法.
class A {
public String getF(){
return null;
}
}
class B {
@Override
public String getF(){
return "someString";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |