请解释为什么以下内容在Java(1.7)中无效。
有一个界面:
interface foo {
mymethod(argument arg)
}
其中argument
也是一个接口:
interface argument{}
argument
的实现:
class someArgument implements argument{}
以及foo
的实现:
class bar implements foo {
mymethod(someArgument arg) {}
}
类bar
导致编译错误,因为mymethod
未实现。无论如何要完成上述操作而不需要铸造?
谢谢!
答案 0 :(得分:4)
mymethod()
签名必须完全,如foo
界面中所定义。
假设您有另一个实现baz
的类(argument
)。然后,mymethod(argument arg)
签名将允许传递baz
类型的参数。
但如果你保持这样:
class bar implements foo {
mymethod(someArgument arg) {}
}
您将无法将baz
个实例传递给mymethod
,因为您违反了合同。
作为旁注,开发时应遵循naming conventions!