我有一个实现两个接口的对象(特别是Serializable和java.security.Key接口).该对象的类还有两个静态方法:一个接受一个Serializable对象,另一个接受一个Key对象.这是一些示例代码:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我运行上面的main方法时,不会抛出任何错误,Java会调用该test(Key)方法.但是,当我将Serializable界面更改为其他内容(我更改其中的参数test(Serializable)并将其更改为超级界面Subclass)时,我的IDE会显示错误:
该方法
test(Key)对于该类型是不明确的SubClass.
我想知道的是,为什么Java允许这种方法与Serializable界面模糊不清?
这个作品和原因test(java.security.Key k)被称为是因为java.security.Key扩展Serializable本身,因此java.security.Key是更专业的比Serializable,并首选方法调用.
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |