staticメソッドでA
という名前の基本クラスを作成し、同じ名前を持つ汎用静的メソッドを持つサブクラスB
を作成すると、コンパイラは失敗します。Genericの名前の衝突
静的メソッドが別の静的メソッドをオーバーライドできないことはわかっているので、隠れの概念を理解することで、エラーではなく再生されるはずです。
名前の衝突:私は取得しています
エラーがあるメソッドM1()タイプBの タイプAの()M1と同じ消去を持っていますが、それを
を隠していませんしかし、以下に含まれるサンプルコードからジェネリック型パラメータを削除すると、正しくコンパイルされます。
class A {
static void m1() {
System.out.println("Base");
}
}
class B extends A {
static <T> void m1() {// Name clash error here
System.out.println("Sub");
}
}
public class Test {
public static void main(final String[] args) {
B.m1();
A.<Object>m1();
}
}
なぜこのように動作するのか教えていただけますか?
「A.m1()」と「B.
提供した例の場合、** genericパラメータは必要ありません**。私はあなたがエラーを起こしている理由は、あなたがそれを使用せずにジェネリックパラメータを必要としているということです。 – staa99
@ BackSlash-はい、正しくあります。エラーコード –