Kotlinpoet:从生成的类型和属性中省略多余的“public”修饰符
Kotlinpoet: Ommitting redundant `public` modifier from generated types and properties
有没有办法从生成的类型和属性中省略多余的 public
修饰符
KotlinPoet 分别是 TypeSpec.Builder
和 PropertySpec.Builder
?
没有,也没有计划支持此类功能。如果您的用例没有显式 public
修饰符很重要,那么一个好的解决方案是 post-使用删除它们的脚本处理输出。
以上是正确的。在 KotlinPoet 中无法省略多余的 public
修饰符,这是有充分理由的。
但是,所有这些(在我的情况下是不必要的)警告让我很紧张,我不得不找到一些方法来摆脱它们。我最终想到的是在 KotlinPoet 生成的文件中抑制它们。
这是 FileSpec.Builder
的扩展,可让您抑制针对特定生成文件的警告。
internal fun FileSpec.Builder.suppressWarningTypes(vararg types: String) {
if (types.isEmpty()) {
return
}
val format = "%S,".repeat(types.count()).trimEnd(',')
addAnnotation(
AnnotationSpec.builder(ClassName("", "Suppress"))
.addMember(format, *types)
.build()
)
}
下面是一个示例,说明如何使用它来消除生成文件中的冗余可见性修饰符警告:
val fileBuilder = FileSpec.builder(myPackageName, myClassName)
fileBuilder.suppressWarningTypes("RedundantVisibilityModifier")
扩展还支持抑制多种警告类型:
fileBuilder.suppressWarningTypes("RedundantVisibilityModifier", "USELESS_CAST")
请注意,我绝不建议您删除生成的代码中所有困扰您的警告! 谨慎使用此代码!
有没有办法从生成的类型和属性中省略多余的 public
修饰符
KotlinPoet 分别是 TypeSpec.Builder
和 PropertySpec.Builder
?
没有,也没有计划支持此类功能。如果您的用例没有显式 public
修饰符很重要,那么一个好的解决方案是 post-使用删除它们的脚本处理输出。
public
修饰符,这是有充分理由的。
但是,所有这些(在我的情况下是不必要的)警告让我很紧张,我不得不找到一些方法来摆脱它们。我最终想到的是在 KotlinPoet 生成的文件中抑制它们。
这是 FileSpec.Builder
的扩展,可让您抑制针对特定生成文件的警告。
internal fun FileSpec.Builder.suppressWarningTypes(vararg types: String) {
if (types.isEmpty()) {
return
}
val format = "%S,".repeat(types.count()).trimEnd(',')
addAnnotation(
AnnotationSpec.builder(ClassName("", "Suppress"))
.addMember(format, *types)
.build()
)
}
下面是一个示例,说明如何使用它来消除生成文件中的冗余可见性修饰符警告:
val fileBuilder = FileSpec.builder(myPackageName, myClassName)
fileBuilder.suppressWarningTypes("RedundantVisibilityModifier")
扩展还支持抑制多种警告类型:
fileBuilder.suppressWarningTypes("RedundantVisibilityModifier", "USELESS_CAST")
请注意,我绝不建议您删除生成的代码中所有困扰您的警告! 谨慎使用此代码!