T和Java中的继承
发布时间:2020-12-15 05:00:07 所属栏目:Java 来源:网络整理
导读:我有一个静态字段F的A类: class A { public static String F = null;} B级: class B extends A { public static String F = "somestring";} 和一个使用字段F的方法的类型化的类: class CT extends A { public void someMethod() { String someString = T.
我有一个静态字段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”!为什么? 解决方法
您无法覆盖字段.由于它是扩展A,它将始终使用A中的字段.
在A类和B类中添加一个返回F的getter.从那里,用A中的方法覆盖A中的方法. class A { public String getF(){ return null; } } class B { @Override public String getF(){ return "someString"; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |