Inheritance in T and Java

I have a class a static field F:

class A {
    public static String F = null;
}

Class B:

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

And a typed class using the method of field F:

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

Then my code calls it

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

When I try to operate with somestring, I get a null pointer exception Therefore, T. f is empty, but t is B, so it should be "somestring"! Why?

Solution

You cannot overwrite fields Since it is extension a, it will always use the fields in a

Add a getter that returns f in class A and class B From there, overwrite the method in a with the method in a

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

class B {
    @Override
    public String getF(){
        return "someString";
    }
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>