我有一个Box使用泛型参数调用的类T.
出于某种原因,在Swift中将Box<String>(或任何其他类型)强制转换为无效Box<Any>.
class Box<T> {}
var box: Box<Any>?
box = Box<String>() // 'String' is not identical to 'Any'
Run Code Online (Sandbox Code Playgroud)
在Java中,有一个?代表任何类型.(Box<?>)
我在斯威夫特可以做些什么?
简短的回答是:你不能投Box<String>,Box<Any>因为他们之间没有关系.
此页面适用于Java,但也适用于此处
给定两个具体类型A和B(例如,数量和整数),MyClass的<A> 没有关系到MyClass的<B>,而不管是否甲乙是相关的.MyClass <A>和MyClass <B>的公共父是Object.
除非你明确定义一个关系.例如支持隐式转换运算符:
class Box<T> {
func __conversion<U>() -> Box<U> {
// do whatever required for conversion
// try reinterpretCast if you can't make type system happy
// which will give you runtime error if you do it wrong...
return Box<U>()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1995 次 |
| 最近记录: |