注解的使用

注解泛型的使用

  • 什么是注解 注解的作用
  • 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)]

如果有类继承泛型类 :

子类对泛型的处理方式:

  1. 不使用泛型
  2. 把泛型具体化
  3. 继续使用泛型
泛型通配符

泛型通配符 是个 ?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值