【泛型、反射、注解】

一、泛型

在这里插入图片描述

无界通配符 ?
上界通配符 ? extends Number
下界通配符 ? Supper Integer

泛型的作用

Java泛型保障了类型的安全
避免了类型转换逻辑
提高代码的重用率

二、反射

反射是指在Java运行状态中  给定一个类对象(Class对象),通过反射获取这个类对象
(Class对象)的所有成员结构;
 给定一个具体的对象,能够动态地调用它的方法及对任意
属性值进行获取和赋值
这种动态获取类的内容、创建对象、以及动态调用对象方
法及操作属性的机制,就叫做Java的反射机制
https://docs.oracle.com/javase/8/docs/api/

优点

 增加程序的灵活性,避免将固有的逻辑程序写死到代码里
 代码简洁,可读性强,可提高代码的复用率

缺点

 相较直接调用在创建对象比较多的情景下反射性能下降
 内部暴露和安全隐患(破坏单例)

反射性能慢原因

 寻找类Class字节码的过程,比如通过ClassName找到对应的字
节码Class,然后进行加载、解析,也会比较慢,而new的方式
则无需寻找,因为在Linking的解析阶段已经将符号引用转为
了直接引用
 安全管理机制的权限验证等等
 若需要调用native方法调用时JNI接口的使用
 入参校验

Class对象的组成

在这里插入图片描述

获取Class对象的四种方式

通过ClassLoader对象的loadClass()方法
类名.class
Class.forName()
object.getClass()

在这里插入图片描述

注解的定义和作用

注解的概念
注解是JDK1.5之后的新特性用来说明程序的
注解的使用:@注解名称
作用分类:
 编写文档:通过代码里标识的注解生成文档【生成文档doc文档】
 代码分析:通过代码里标识的注解对代码进行分析【使用反射】
 编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【Override】
Java提供了一些预定义的注解
@Override:检测被该注解标注的方法是否是继承自父类(接口)的
@Deprecated:该注解标注的内容,表示已过时
@SuppressWarnings:压制警告,一般传递参数all如@SuppressWarnings(“all”)

自定义注解

自定义注解
元注解
public @interface 注解名称{
属性列表; } 属性的返回值类型有:基本数据类型、String、枚举、注解、Class or an
invocation of Class、以上类型的数组
 https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.6.1

元注解

@Target:描述当前注解能够作用的位置
ElementType.TYPE:可以作用在类上
ElementType.METHOD:可以作用在方法上
ElementType.FIELD:可以作用在成员变量上 @Retention: 描述注解被保留到的阶段
SOURCE:表示当前注解只在代码阶段有效
CLASS:表示该注解会被保留到字节码阶段
RUNTIME:表示该注解会被保留到运行阶段 JVM
自定义的注解:RetentionPolicy.RUNTIME;SOURCE < CLASS < RUNTIME

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值