作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是想拥有自己的注释来清理注释质量,并在需要时轻松更改它们;
import javax.persistence.Column
import javax.validation.constraints.Size
class Foo(){
@Column(name="bar_", nullable = false, length = 32)
@Size(min = 32, max = 32)
String bar;
@Column(nullable = false, length = 32)
@Size(min = 32, max = 32)
String bas;
@Column(nullable = false, length = 32, unique=true)
@Size(min = 32, max = 32)
String baq;
}
希望我能
class Foo(){
@MyColumn(name="bar_")
String bar;
@MyColumn
String bas;
@MyColumn(unique=true)
String baq;
}
nullable = false, length = 32
是默认参数。
最佳答案
由于您使用的是从 javax
导入的第 3 方注释。最好的选择是引入复合注释。 (Kotlin doesn't support 注释继承。
@Column(name = "bar_", nullable = false, length = 32)
@Size(min = 32, max = 32)
annotation class Anno
Spring Boot 在将大量配置注释组合在一起时做得非常好 -
check it out .
Anno
,寿。您必须提供具有常量值的注释参数。
@Column(...)
@Size(min = Anno.max, max = Anno.min)
annotation class Anno(val min: Int, val max: Int)
看看
Kapt或 Kotlin Compiler 插件,您将需要一段代码生成。
newField
您的自定义方法
ClassBuilder
:
override fun newField(
origin: JvmDeclarationOrigin,
access: Int,
name: String,
desc: String,
signature: String?,
value: Any?
): FieldVisitor {
// if field is annotated with Anno -- add two custom annotation with parameters of your choice
// otherwise perform a standard field init
}
然后注册它
class AnnoRegister : ComponentRegistrar {
override fun registerProjectComponents(
project: MockProject,
configuration: CompilerConfiguration
) {
...
}
将此处理集成到现有的 gradle 或 maven 项目中应该相对容易,或者只是传递给
kotlinc
.
关于java - 如何在 Java 或 Kotlin 中使用我自己的注释包装 @Column 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65037923/
我是一名优秀的程序员,十分优秀!