kotlin使用validation注解无效

validation注解不生效

kotlin 中给构造函数的参数加上 validation 的一些注解无法生效。

原因分析:

  • 在 Java 中,注解写在在实体类属性或者 get/set 方法上;在 kotlin 中,属性直接写在构造函数中。
  • 可能是一种优先级的问题:
    • 在构造函数中,如果注解的 @Target 里除了有 ElementType.FIELD,还有 ElementType.PARAMETER ,则kotlin优先把该注解当作对函数参数的注解,而不是对属性/get方法的注解。
  • 查看注解是否生效:可以查看反编译后的java代码,或者查看它编译后的.class文件,看一看该注解是否存在于属性之上。

解决办法:

  • 添加 @field: 标识符(@field:注解名),field 标识符能够限定注解作用于属性。

  • 添加 @get:(@get:注解名) 标识符。 kotlin 会直接在字节码中生成 gettersetter,这样写是显式的是表明这个注解应该作用在 getter 上。

相关推荐
计算机学姐3 小时前
基于SpringBoot的咖啡店管理系统【个性化推荐+数据可视化统计+配送信息】
java·vue.js·spring boot·后端·mysql·信息可视化·tomcat
My的梦想已实现3 小时前
关于JAVA Springboot集成支付后打包JAR之后报安全错误的处理
java·spring boot·jar
小江的记录本3 小时前
【注解】常见 Java 注解系统性知识体系总结(附《全方位对比表》+ 思维导图)
java·前端·spring boot·后端·spring·mybatis·web
Mr.45674 小时前
Spring Boot 集成 PostgreSQL 表级备份与恢复实战
java·spring boot·后端·postgresql
白露与泡影4 小时前
探索springboot程序打包docker的最佳方式
spring boot·后端·docker
sthnyph5 小时前
SpringBoot Test详解
spring boot·后端·log4j
brucelee1865 小时前
Spring Boot 测试最佳实践
spring boot·后端·log4j
hnlgzb6 小时前
目前编写安卓app的话有哪几种设计模式?
android·设计模式·kotlin·android jetpack·compose
DROm RAPS6 小时前
十七:Spring Boot依赖 (2)-- spring-boot-starter-web 依赖详解
前端·spring boot·后端
TlYf NTLE7 小时前
Spring Boot spring-boot-maven-plugin 参数配置详解
spring boot·后端·maven