当前位置:网站首页>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());
对注解的操作
️总结
反射与注解虽然难度不如多线程等版块,但是重要性不容忽视,对于对象的创建我们鼓励利用反射来创建,它允许程序创建和控制任何类的对象(根据安全性限制),无需提前硬编码目标类。这些特性使得反射特别适用于创建以非常普通的方式与对象协作的库。
业精于勤,荒于嬉; 行成于思,毁于随。
边栏推荐
- 互换性与测量技术——表面粗糙度选取和标注方法
- A Practical Arrangement of Map GIS Development Matters (Part 1)
- 没想到MySQL还会问这些...
- oracle的基数会影响到查询速度吗?
- Vim and copy and paste from the outside (don't need to install the plugin)
- 解决vim与外界的复制粘贴(不用安装插件)
- 言简意赅,说说 @Transactional 在项目中的使用
- 重庆纸质发票再见!开住宿费电子发票即将全面取代酒店餐饮加油站发票
- Add user error useradd: cannot open /etc/passwd
- 21天学习挑战赛第一周总结
猜你喜欢

C语言之自定义类型------结构体

Google search skills - programmer is recommended

The most unlucky and the luckiest

CSAPP Data Lab

①CAS SSO单点登录框架源码深度分析

ROS源代码阅读(1)

flink The object probably contains or references non serializable fields.

UNI-APP_iphone苹果手机底部安全区域

CSAPP Data Lab

ESP32的环境配置(arduino arduino2.0 VScode platform哪个好用?)
随机推荐
Goodbye Chongqing paper invoices!The issuance of electronic invoices for accommodation expenses will soon completely replace the invoices of hotels, catering and gas stations
索引的创建、查看、删除
《人生若如初见》命运多舛,人物饱满,朱亚文角色反差太惊喜
“京台高铁”亮相百度地图,真能在2035年建成吗?
Add support for Textbundle
A surviving spouse of the opposite sex within large turn paragraph, what for
flink The object probably contains or references non serializable fields.
PIFuHD配置记录
The ifconfig compared with IP command
The problem that Merge will be lost again after code Revert has been solved
DOM-DOM tree, a DOM tree has three types of nodes
聊聊对RPC的理解
MSP430如何给板子下载程序?(IAR MSPFET CCS)
How does MSP430 download programs to the board?(IAR MSPFET CCS)
CSDN 博客更换皮肤
【Pdf自动生成书签】
[BX] and loop
大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,如何分配?
A practice arrangement about map GIS (below) GIS practice of Redis
js中的this问题