注解泛型的使用
- 什么是注解 注解的作用
- jdk内置的三个注解
- 元注解
- 注解的声明
- 使用反射获取注解
什么是注解 注解的作用
注解是加到代码上的一些特殊的标记 标记以 @ 开头 注解一般用来封装复杂的代码
类上,方法上,属性上也可以加注解
另外 一个作用:在程序的编译器防止我们犯一些小错误
注解的声明
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2mLD2WeQ-1610004727646)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20210106093638600.png)]
元注解
元数据 元注解 元数据 就是描述的数据的数据 元注解 就是用来描述注解的注解
元注解名称 | 说明 |
---|---|
@Target | 用来描述该注解能加到什么地方不能加到什么地方 如果不声明该元注解 则 当前注解能加到类上或者方法上或者属性上 等其他地方ElementType.TYPE 只能加到类上 |
@Retention | 用来描述注解的级别 RetentionPolic y.SOURCE 源码级别 RetentionPolicy.Class 类级别(默认的级别) RetentionPolicy.RUNTIME(运行是级别 ) |
使用反射获取注解
package com.aaa.test;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
/**
* @Author Lst
* @Date 2021/1/6 14:45
* @Version 1.0
*/
@MyAnn("河南郑州")
public class Person {
@MyAnn("郑州")
private String info;
public static void main(String[] args) throws Exception {
// 获取 Person class 对象
Class clazz = Class.forName("com.aaa.test.Person");
// 获取类上加的所有的注解
Annotation[] annotations = clazz.getAnnotations();
for (Annotation annotation : annotations) {
System.out.println(annotation);
}
MyAnn annotation = (MyAnn)clazz.getAnnotation(MyAnn.class);
System.out.println("年龄:"+annotation.age());
System.out.println("地址:"+annotation.address());
// 获取info属性上的
Field info = clazz.getDeclaredField("info");
MyAnn annotation1 = info.getAnnotation(MyAnn.class);
System.out.println(annotation1);
}
}
泛型
什么是泛型 泛型的作用
泛型 就是 “参数化类型”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3wK3C9EG-1610004727649)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20210106183859805.png)]
第一个好处 : 可以封装结构重复 简化代码的开发量
第二个好处 : 编译期类型检查
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CXNBVIrz-1610004727651)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20210107104111877.png)]
泛型类或者接口的声明
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yXhUq02s-1610004727653)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20210107105109382.png)]
如果有类继承泛型类 :
子类对泛型的处理方式:
- 不使用泛型
- 把泛型具体化
- 继续使用泛型
泛型通配符
泛型通配符 是个 ?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tqtkGEKp-1610004727655)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20210107111454977.png)]
泛型通配符上限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vKnCAk6t-1610004727657)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20210107113419991.png)]
泛型方法的使用
有的时候我们使用泛型不想在整个类中使用,只想在某一个方法的内部使用泛型,就是需要泛型方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ConXc3HT-1610004727658)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20210107114736217.png)]
泛型通配符下限
泛型方法的使用
有的时候我们使用泛型不想在整个类中使用,只想在某一个方法的内部使用泛型,就是需要泛型方法
[外链图片转存中…(img-ConXc3HT-1610004727658)]
泛型通配符下限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IwXA0D5d-1610004727659)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20210107144439264.png)]