加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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";
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读