gpt4 book ai didi

java - Java 中的 T 和继承

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:34:20 26 4
gpt4 key购买 nike

我有一个带有静态字段 F 的 A 类:

class A {
public static String F = null;
}

B 类:

class B extends A {
public static String F = "somestring";
}

和一个类型化类,其方法使用字段 F:

class C<T extends A> {
public void someMethod() {
String someString = T.F;
// Manipulations with someString
}
}

然后是调用它的代码。

C<B> c = new C<B>();
c.someMethod();

并且在尝试使用 someString 进行操作时出现空指针异常。所以,T.F 是空的,但 T 是 B,所以它应该是“somestring”!为什么?

最佳答案

您不能覆盖字段。由于是extends A,所以会一直使用A中的字段。

在 A 类和 B 类中添加一个返回 F 的 getter。从那里,用 B 中的方法覆盖 A 中的方法。

class A {
public String getF(){
return null;
}
}

class B {
@Override
public String getF(){
return "someString";
}
}

关于java - Java 中的 T 和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14760064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com