项目语言:Kotlin
使用Kotlin文件生成框架:kotlinpoet
KotlinPoet如何创建泛型:
创建一个ClassName来表示一个类,ClassName有一个扩展方法parameterizedBy()
里面传入的参数就是
KClass::class.asClassName().parameterizedBy(Any::class.asTypeName())
会生成
KClass<Any>
KotlinPoet 的TypeName有几种
TypeName 目前用到了:
- TypeName 正常的泛型类型
- WildcardTypeName 用于转型的TypeName,可以配置类型是in 还是out
- TypeVariableName 用于配置可变泛型的TypeName
WildcardTypeName.producerOf(Any::class.asTypeName())
即 out Any
WildcardTypeName.consumerOf(Any::class.asTypeName())
即 in Any
TypeVariableName("T")
即 T
TypeVariableName("T", Any::class)
即 T :Any
KotlinPoet 如何创建可以为NUll的变量
ClassName创建变量,之后用过copy扩展传递nullable参数
val newClassName=Any::class.asTy