加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift Generics相当于Java的任何类型<?>

发布时间:2020-12-14 04:41:23 所属栏目:百科 来源:网络整理
导读:在 Java中,有时可以使用泛型而不关心实际类型. 你能在 Swift中做到吗? 例如,MyClass AnyObject不像MyClass那样工作?会在Java中.在我期望它的工作原理相同. 还有其他方法吗? 解决方法 引入一个类型参数;编译器会让它采用任何类型.尝试: func executeReque
在 Java中,有时可以使用泛型而不关心实际类型.
你能在 Swift中做到吗?

例如,MyClass< AnyObject>不像MyClass那样工作<?>会在Java中.在我期望它的工作原理相同.

还有其他方法吗?

解决方法

引入一个类型参数;编译器会让它采用任何类型.尝试:

func executeRequest<T> (request: APIRequest<T>) {
 // ...
}

例如:

class APIRequest<T> {}
class Movie {}
class MovieRequest : APIRequest<Movie> {}
let m = MovieRequest()
//print(m)

func executeRequest<T> (request: APIRequest<T>) {
    print(request)
}

executeRequest(m)

类型参数的引入允许一个更明确并且更好地匹配问题域.例如,在您的情况下,您肯定不能对任何事情进行APIRequest;你可以在资源上做一个APIRequest.

protocol Resource {}
class Movie : Resource {}
class Song : Resource {}

class APIRequest<T:Resource> { /* ... */ }

func executeRequest<T:Resource> (request: APIRequest<T>) { /* ... */ }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读