当前位置:网站首页>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());
对注解的操作
️总结
反射与注解虽然难度不如多线程等版块,但是重要性不容忽视,对于对象的创建我们鼓励利用反射来创建,它允许程序创建和控制任何类的对象(根据安全性限制),无需提前硬编码目标类。这些特性使得反射特别适用于创建以非常普通的方式与对象协作的库。
业精于勤,荒于嬉; 行成于思,毁于随。
边栏推荐
- 2022茶艺师(中级)考试试题及模拟考试
- 图解LeetCode——640. 求解方程(难度:中等)
- 二叉树相关代码题【较全】C语言
- 2022制冷与空调设备运行操作考试试题模拟考试平台操作
- Typescript study notes | Byte Youth Training Notes
- 按摩椅控制板的开发让按摩椅变得简约智能
- A practice arrangement about map GIS (below) GIS practice of Redis
- 否定语义转化层
- 深度学习-第二次
- The practice of alibaba data synchronization component canal
猜你喜欢
浮点数在内存中的存储方式
Logstash日志数据写入异常排查问题总结
代码 Revert 后再次 Merge 会丢失的问题,已解决
BUU刷题记录
ES进阶 数组功能语法新特性详解
[DB operation management/development solution] Shanghai Daoning provides you with an integrated development tool to improve the convenience of work - Orange
Add user error useradd: cannot open /etc/passwd
[idea error] Invalid target distribution: 17 solution reference
一次简单的 JVM 调优,学会拿去写到简历里
互换性测量技术-几何误差
随机推荐
调试技巧总结
DNS分离解析和智能解析
MySQL的主从复制+读写分离+分库分表,看这一篇文章就够了
入职数字ic设计后的一些工作心得
Briefly, talk about the use of @Transactional in the project
没想到MySQL还会问这些...
7 sorting algorithms that are often tested in interviews
21 Day Learning Challenge Week 1 Summary
[BX] and loop
Goodbye Guangzhou paper invoices!The issuance of electronic invoices for accommodation fees will completely replace the invoices of hotels, restaurants and gas stations
CTO说MySQL单表行数不要超过2000w,为啥?
The most unlucky and the luckiest
Salesforce disbands the Chinese team, which CRM product is more suitable for the Chinese
添加用户报错useradd: cannot open /etc/passwd
IDE编译报错:Dangling metacharacter
CSDN blog replacement skin
轮转数组问题:如何实现数组“整体逆序,内部有序”?“三步转换法”妙转数组
2022茶艺师(中级)考试试题及模拟考试
VIT 源码详解
js中的this问题