JAVA基础篇(四)——反射、枚举、泛型

**

反射**

反射是java语言的一个特性,通过动态编译确定类型,绑定对象,对内部的成员进行操作,
作用
在运行时判断一个对象所属的类
在运行时获取类的对象
在运行时访问java对象的属性、方法、构造方法等

优缺点
可以实现动态创建对象和编译,灵活性强,但对性能有影响

Ioc
是一个容器,在容器里要产生的对象都在配置文件中给出定义,然后利用编程语言提供的反射机制,根据配置文件中给出的类名生成相应的对象。

枚举类型

是由一组固定的常量组合成合法的类型,用来简化代码,方便操作

应用场景
定义变量(如周天、四季)、switch、向枚举中添加新方法、覆盖枚举的方法、实现接口

枚举保证的线程安全
当一个Java类第一次被真正使用到的时候静态资源被初始化、Java类的加载和初始化都是线程安全的。

枚举是实现单例最简单的方式,是因为Java提供的关键字enum,在被虚拟机加载的过程中能保证线程安全,可避免在反序列化中由反射而导致的单例被破坏

用枚举实现单例的好处
1.枚举写法简单
2.枚举自己处理序列化
3.枚举实例创建时线程安全的

泛型

作用:将类型由原来的具体的类型参数化,泛型最大的好处时提高代码复用

Java编译器处理泛型
Code sharing:对每个泛型类只生成唯一的一份目标代码,该泛型所有的实例都映射到这份代码上,在需要的时候执行类型检查和类型转换

类型擦除
将泛型java代码转换为普通java代码

主要过程
1.将所有泛型参数用最左边界参数替换
2.移除所有类型参数

总结
1.虚拟机中没有泛型,只有普通类的普通方法,所有泛型类的类型参数在编译时都会被擦除
2.创建泛型对象时请指明类型,让编译器尽早的做参数检查
3.编译器的警告错误,一般是ClassCastException
4.静态变量是被泛型类的所有实例共享的
5.泛型的类型参数不能用在Java异常处理的catch语句中

限定通配符
类型的上界:<? extends T>,类型必须为T类型或者T子类
类型的下界:<?super T>,类型必须为T类型或T父类

非限定通配符
表示可以用任意泛型类型来代替,类型为

注:在使用泛型时,获取数据用extends,存储数据用super

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值