CS-Notes打卡第五天Java基础最后部分

CS-Notes

反射

每个类都有一个Class对象,包含了类有关信息。类加载相当于Class对象的加载,类在第一次使用的时候才加载到JVM当中。
也可以使用Class.forName(“com.mysql.jdbc.Driver”)方法加载类,最后返回一个mysql的Jdbc驱动类对象。
反射可以提供运行时的类信息,并且这个类可以在运行时才加载进来,甚至在编译时期该类.class不存在也能加载进来。

反射的类在java.lang.reflect包下,常用的类有:

  1. Field 可以使用get()和set()方法读取和修改Filed对象关联的字段
  2. Method 可以使用invoke()方法调用Method类关联的方法
  3. Constructor 可以用Constructor的newInstance()构建对象

反射的优点:

  1. 灵活性:当我们设置一个导出文件接口,通过数据库配置导出类的实现,通过反射调用,可以减少代码的书写,只需要配置特定条件下的导出实现类。
  2. 类浏览器和可视化开发环境:例如idea中的Ctrl O可以简单看到类的字段方法。
  3. 调试器和测试工具:调试器需要能够检查一个类里的私有成员。测试工具可以利用反射来自动地调用类里定义的可被发现的 API 定义,以确保一组测试中有较高的代码覆盖率。

反射的缺点:
1.性能开销大:反射涉及到动态类型的解析,Jvm无法对代码进行优化。反射操作的效率要比非反射操作低。
2.安全限制:反射必须使用在没有安全限制的环境。
3.内部暴露:由于通过反射可以调用私有方法(使用前需要先解除Accessible),所以使用反射可能出现意料之外的副作用,这可能导致代码功能失调并且破坏可移植性。反射代码破坏了抽象性,因此平台发生变化,代码的行为可能也发生了变化。

异常

异常Throwable 可以分为两类:Error和Exception。Error为Jvm无法处理的错误,而Exception可以分为两种:
1.受检异常,在使用Ide编辑的时候能提示使用Try catch的异常,比如IO读取找不到文件提示。
2.运行时异常,程序运行时的异常例如int b = 1/0;在编辑时Ide无法得知以及数组越界这类异常。
在这里插入图片描述

泛型

提供了编译期的类型安全,确保只能把正确类型的对象放到集合中,避免出现ClassCastException

类型擦除
编译器在编译时擦出了所有的类型相关的信息,所以在运行时不存在任何类型相关的信息。

限定通配符
1.<? extends T> 限定类型必须是T的子类
2.<? super T> 限定类型必须是T的父类

非限定通配符

<?>可以用任意类型来替代

注解

注解是附加在代码中的元信息,用于一些工具在编译运行时进行解析和使用,起到说明、配置的功能。注解不会影响代码的实际逻辑,仅仅起到辅助作用。
例如:lombok插件,在Pojo类上面增加@Data注解,可以在编译时增加set get方法。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
反射
异常
泛型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值