说我有一个功能
def method1(MyClass2 mc2) {...}
我用MyClass1
类型的对象来调用它。有没有办法可以指定如何从MyClass1
隐式转换为MyClass2
,以便方法调用无需明确说出method1(mc1 as MyClass2)
即可使用?
答案 0 :(得分:4)
如果MyClass1没有实现/扩展MyClass2,那么在没有旧的备用Java方法重载的情况下,没有任何我知道会做“作为MyClass2”的转换。使用包含MyClass1的签名显式重载方法:
def method1(MyClass1 mc1) {
method1(mc1 as MyClass2)
}
另一个更常常的替代方法是不显式键入method1,以便它不要求你有一个MyClass2的实例:
def method1(mc) {
// do stuff and let mc walk/talk/quack like MyClass2
// or even do the "as MyClass2" in this method if you need it for something further down.
}