当前位置:网站首页>2022-08-10 第六小组 瞒春 学习笔记
2022-08-10 第六小组 瞒春 学习笔记
2022-08-11 03:08:00 【烫嘴的辛拉面】
活动地址:CSDN21天学习挑战赛
前言
今天进行注解、反射的学习
Java基础的课程大部分已经结束,剩下一些小的点进行补充
️注解
注解:Annotation JDK1.5
public @interface MyAnnotation(){
}
自创注解
注解也有注解,元注解:专门给注解加的注解
Retention等都是枚举,后面跟的是常量
我们发现注解中可以有方法,可以有默认值
String name() default “Tom”;
定义方法格式:String name(); 不写默认值需要赋值,有默认值用default指定默认值
public class Ch01{
@MyAnnotation(age=20) 可以理解为加了返回值
public void show(){
}
}
如果只有一个可以不用写名字,如果有多个需要写名字
在java的整个的注解体系中,有三个非常重要的主干类
1.Annotation 接口 定义一些常用的方法
2.ElementType枚举 用来指定注解的类型 (注解要用在哪里)
3.RetentionPolicy 枚举 用来指定注解的策略,不同类型的策略指定的作用域不同
(1)SUTCE 注解仅存在与编译器处理期间,编译期处理完之后,这个注解就没有了
(2)CLASS 注解在.class文件中依然有效
(3)RUNTIME 编译期是不起作用的,只有在运行期才由JVM读取
Java自带注解
️作用在代码上的注解
[email protected],检测方法是否是重写方法,如果返现其父类,或者引用的接口中没有该方法会报错
[email protected] 标记的方法是过时的方法
[email protected] 让编辑器去忽略警告
[email protected] 忽略任何使用参数为泛型变量的方法或构造器产生的警告
[email protected] 标识一个接口为函数式接口
[email protected] 标识某个注解可以在同一个声明上使用多次
all:忽略所有警告
boxing:忽略装箱拆箱警告
rawtypes:使用生成时没有指定数据类型
unchecked:忽略没有进行类型检测的警告
unused:忽略没有使用的警告
️元注解
[email protected] 标识这个注解的作用域
[email protected] 标记这个注解是否包含在用户文档中
[email protected] 这个注解可以修饰哪些信息
[email protected] 如果一个类用上了这个注解 ,那么其子类也会继承这个注解
️反射
Class类
可以拿到类里面的所有结构,不需要操作这个类就可以访问类的信息
1.直接使用类名.class
2.使用全类名
3.使用对象
Class<>泛型使用时候加上
获取类的名字:clazz.getName()
获取类的加载器:
获取资源
URL resource = clazz.getResource(“”);
获取父类
clazz.getSuperclass()
是不是接口数组
clazz.isArray();
clazz.isInterface();
重点
Dog dog = clazz.newInstance(); jdk9过时
创建出dog一个对象:使用class类对象实例化一个对象
clazz.getDeclaredConstructor().newInstance(); 代替 用构造器的写法
对成员变量的操作:
对成员变量进行操作,只能获取到public修饰的属性
可以获取到private属性
可以拿到所有的属性
获取对象的属性
String str = (String)type.get(dog1); 如果想要字符串就用强转
给对象的属性赋值
私有化的东西也可以操作
反射调用方法???
通过反射来调用构造器
通过构造器创建对象
构造器私有化
sout(dog1.getName());
对注解的操作
️总结
反射与注解虽然难度不如多线程等版块,但是重要性不容忽视,对于对象的创建我们鼓励利用反射来创建,它允许程序创建和控制任何类的对象(根据安全性限制),无需提前硬编码目标类。这些特性使得反射特别适用于创建以非常普通的方式与对象协作的库。
业精于勤,荒于嬉; 行成于思,毁于随。
边栏推荐
猜你喜欢
"Life Is Like First Seen" is ill-fated, full of characters, and the contrast of Zhu Yawen's characters is too surprising
[4G/5G/6G专题基础-154]: 5G无线准入控制RAC(Radio Admission Control)
言简意赅,说说 @Transactional 在项目中的使用
Briefly, talk about the use of @Transactional in the project
alibaba数据同步组件canal的实践整理
【DB运营管理/开发解决方案】上海道宁为您提供提高工作便利性的集成开发工具——Orange
JS-DOM element object
flink The object probably contains or references non serializable fields.
Docker 链接sqlserver时出现en-us is an invalid culture错误解决方案
Realization of vending machine function based on FPGA state machine
随机推荐
Realization of vending machine function based on FPGA state machine
Idea (优选)cherry-pick操作
Detailed explanation of new features of ES advanced function syntax
①In-depth analysis of CAS SSO single sign-on framework source code
The problem that Merge will be lost again after code Revert has been solved
①CAS SSO单点登录框架源码深度分析
[idea error] Invalid target distribution: 17 solution reference
The ifconfig compared with IP command
2022制冷与空调设备运行操作考试试题模拟考试平台操作
【LeetCode】Day112-repetitive DNA sequence
面试常考的7种排序算法
怎么删除语句审计日志?
Ninjutsu_v3_08_2020 - safety penetrating system installation
C语言之自定义类型------结构体
ES进阶 函数功能语法新特性详解
Add user error useradd: cannot open /etc/passwd
(CVPR-2017)在身体和潜在部位学习深度上下文感知特征以进行行人重识别
关于地图GIS的一次实践整理(下) Redis的GIS实践
成都纸质发票再见!开住宿费电子发票即将全面取代酒店餐饮加油站发票
LeetCode热题(12.买卖股票的最佳时机)