在具有与非泛型超类同名的泛型类中具有类方法时出错

时间:2014-12-04 15:46:43

标签: ios generics swift

以下代码导致错误Ambiguous use of 'B'

public class A {
    public class func B<T>(t: T) -> T {
        return t
    }

}
public class AT<T> : A {
    public class func B<T1>(t: T1) -> T1 {
        return t
    }
}
println(AT<Int>.B("a"))

但在尝试将override添加到B中的方法AT<T>时,收到错误Method does not override any method from its superclass

1 个答案:

答案 0 :(得分:1)

由于参数类型不同,因此无法覆盖该函数,因此,一个函数不能作为另一个函数。此外,如果已存在,则不能使用相同的方法签名。唯一的解决方案是更改名称,或者为超类使用与参数相同的类型。此外,您无法隐藏超类中的方法,但如果通过覆盖它来使用它,则可能抛出异常。