当前位置: 首页 > news >正文

【面经总结】Java基础 - 注解

注解

什么是注解

一种特殊的注释

注解的作用

  • 编译器可以使用注解来检测错误或抑制警告。
  • 处理注解信息以生成代码或配置文件等。
  • 可以在运行时检查某些注解并处理。

注解的缺点

  • 侵入式编程,增加耦合度
  • 产生问题定位困难
  • 需要利用反射来获取属性,破坏代码封装性

注解的解析方式

  1. 编译期直接的扫描:JDK内置注解类(@Override
  2. 运行期的反射:自定义注解类(@Component

怎么自定义注解

  1. 创建注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface NotNull {
}
  1. 创建注解处理器
public class NotNullChecker {public static void check(Object obj) throws IllegalAccessException {Class<?> clazz = obj.getClass();Field[] fields = clazz.getDeclaredFields();for (Field field : fields) {if (field.isAnnotationPresent(NotNull.class)) {// 确保可以访问私有字段field.setAccessible(true);if (field.get(obj) == null) {throw new NullPointerException();}}}}
  1. 测试并使用
public class User {@NotNullprivate String name;
}public class Main {public static void main(String[] args) {User user1 = new User("John");User user2 = new User(null);try {NotNullChecker.check(user1);System.out.println("user1 passed the null check.");} catch (Exception e) {System.out.println(e.getMessage());}try {NotNullChecker.check(user2);System.out.println("user2 passed the null check.");} catch (Exception e) {System.out.println(e.getMessage());}}
}
http://www.lryc.cn/news/370021.html

相关文章:

  • Matlab笔记
  • android 编译源码添加日志打印
  • Vue19-key的原理
  • 零一科技Yi-VL 6B视觉大模型环境搭建推理
  • Django面试题
  • Perl语言入门学习
  • Autoformer
  • uniapp录音播放功能
  • ✊构建浏览器工作原理知识体系(网络协议篇)
  • 【AI大模型】Transformers大模型库(八):大模型微调之LoraConfig
  • 8-1RT-Thread消息队列
  • 解除网站IP抓取限制的方法有哪些?
  • “手撕”二叉树的OJ习题
  • Linux Mint 21.3简介
  • C++11 面试题整理
  • 【智能制造-2】焊缝跟踪
  • 优思学院|用ChatGPT快速完成数据分析图表【柏累托图法】
  • [晕事]今天做了件晕事37 extern “C“ 被认为了是外部函数
  • 问题:关于醋酸钠的结构,下列说法错误的是() #媒体#媒体
  • 网络安全(补充)
  • Redis集群(3)
  • 防止Selenium被检测 Google Chrome 125
  • LeetCode 算法:螺旋矩阵c++
  • 【全开源】医护上门系统小程序APP公众号h5源码
  • 结构体<C语言>
  • 点云分割报告整理(未完成版-每天写一点)
  • python基础 002 - 1 基础语法
  • 浅谈Web开发的三大主流框架:Angular、React和Vue.js
  • 使用net.sf.mpxj读取project的.mpp文件
  • ubuntu 22.04 升级到24.04