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 上。

相关推荐
BS30813_vx9 分钟前
31754+基于 Spring Boot + Vue 的网络文学交流分享平台设计与实现
vue.js·spring boot·后端
摇滚侠1 小时前
《Spring Boot 3:高级与架构设计》第 2 章 IOC容器的高级机制 Environment 阅读笔记 4
spring boot·笔记·后端
豆角焖肉1 小时前
Spring Boot配置文件与自动配置原理深度剖析
spring boot·配置文件·自动配置原理·yaml·conditional
豆角焖肉1 小时前
Spring Boot入门实战:从零搭建第一个应用
java·spring boot·后端·自动配置
BUG指挥官1 小时前
Redis已接入AI
数据库·人工智能·spring boot·redis·spring cloud
m0_5873830012 小时前
全民健身解决方案软件开发实战:从架构设计到落地指南
java·spring boot·spring·架构·需求分析
azhou的代码园16 小时前
基于RFM模型的中小型企业客户管理系统
java·人工智能·spring boot·毕业设计
行百里er16 小时前
BeanPostProcessor:包装 Feign Client
spring boot·后端·监控
花生了什么事o16 小时前
自定义Spring Boot Starter全流程
java·spring boot·后端
摇滚侠17 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 使用 JdbcTemplate 阅读笔记 31
android·spring boot·笔记