私は2つのインターフェース(具体的にはSerializable
とjava.security.Key
インターフェース)を実装するオブジェクトを持っています。このオブジェクトのクラスには、Serializable
オブジェクトを取るメソッドとKey
オブジェクトを取るメソッドという2つの静的メソッドもあります。私は上記のmainメソッドを実行すると、エラーがスローされないとJavaはtest(Key)
メソッドを呼び出しているJava - オーバーロードされたメソッドは引数のためのインタフェースをとります。どちらの方法が呼び出され、なぜですか?
public class Subclass implements Serializable, java.security.Key{
public static void test(Serializable s) {
System.out.println("Ser");
}
public static void test(java.security.Key k) {
System.out.println("Key");
}
public static void main(String[]args){
test(new Subclass());
}
}
:ここではいくつかのサンプルコードです。私が知りたいのは何
The method
test(Key)
is ambiguous for the typeSubClass
.
:しかし、私は何か他のものにSerializable
インターフェイスを変更する場合、(私はtest(Serializable)
でパラメータを変更し、Subclass
のスーパーインタフェースを変更する)何か他のものに、私のIDEは私にエラーを示しますなぜ、JavaはSerializable
インターフェースでこの種のメソッドのあいまいさを許しているのですか? java.security.Key
はjava.security.Key
がSerializable
よりより特殊とメソッド呼び出しに好ましいしたがって、Serializable
自体延びため
あなたが使った他のタイプは何ですか?これらの*その他のもの* –