面试题答案
一键面试泛型元类型的高级应用场景
- 对象创建工厂:可以根据不同的类型元数据创建相应类型的实例,实现通用的对象创建逻辑,提高代码复用性。
- 类型检查与转换:在运行时对不同类型进行检查和转换,特别是在处理多种类型的集合时。
- 依赖注入:通过泛型元类型可以方便地注入不同类型的依赖对象,实现灵活的架构设计。
通用对象创建工厂代码实现
class Factory {
static func createInstance<T: AnyObject>(ofType type: T.Type) -> T? {
if let instance = T.init() as? T {
return instance
}
return nil
}
}
// 示例使用
class SomeClass {
init() {
print("SomeClass初始化")
}
}
let someInstance = Factory.createInstance(ofType: SomeClass.self)
if let instance = someInstance {
print("成功创建SomeClass实例")
} else {
print("创建SomeClass实例失败")
}
上述代码中,Factory
类提供了一个静态方法createInstance
,该方法接受一个泛型元类型T.Type
,尝试创建该类型的实例。如果初始化成功,返回创建的实例;如果失败(例如init?
返回nil
),则返回nil
。在示例使用部分,创建了SomeClass
的实例并根据结果进行相应提示。