ジェネリックを使用してさまざまなタイプのインターフェイスに適応するメソッドを作成しようとしています。
このコードでは、メソッド f an g が「interface A」ではなく「BB」を出力すると予想していました。なぜこれが起こったのですか?
interface A {
String n="interface A";
}
interface B extends A {
String n = "BB";
}
public class Main {
<T extends A> void f() {
T a = null;
System.out.println(a.n);
}
<T extends A> void g() {
System.out.println(T.n);
}
public static void main(String[] args) {
Main m = new Main();
m.<B>f();
m.<B>g();
}