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

相关推荐
她说..13 小时前
Java 基本数据类型高频面试题
java·开发语言·jvm·spring boot
希望永不加班13 小时前
SpringBoot 整合 MongoDB
java·spring boot·后端·mongodb·spring
诗人不写诗14 小时前
spring boot apm生态
java·数据库·spring boot
卓怡学长15 小时前
m307自习室预订座位管理分析与实现
java·spring boot·spring
Arya_aa15 小时前
生猪养殖溯源系统前期准备与SpringBoot框架
java·spring boot
2301_7717172115 小时前
idea中springboot中使用junit测试报错的解决方案
spring boot·junit·intellij-idea
火飞鹰16 小时前
封装MinIO为starter
java·数据库·spring boot
却话巴山夜雨时i18 小时前
Java大厂面试:从Spring Boot到微服务的深度剖析
java·spring boot·spring cloud·微服务·分布式事务·大厂面试
希望永不加班18 小时前
SpringBoot 缓存注解:@Cacheable/@CacheEvict 使用
java·spring boot·spring·缓存·mybatis
源码站~18 小时前
基于Spring Boot+Vue3的烹饪交流学习系统 设计与实现
java·vue.js·spring boot·后端·mysql·毕业设计·毕设