面试题总结——JDK1.5介绍

面试题总结——JDK1.5介绍

 一、泛型

  大概说一下泛型的相关

  泛型的实质是参数化类型,也就是说可以进行操作的数据类型被指定为一个参数,这个参数只能是引用数据类型,而不能是普通数据类型,普通数据类型需要使用其包装类。泛型在编译期间就会进行类型检测而不是和普通类型一样在运行时才进行检测,增加代码可读性,效率更高。多用在Java容器中。

  什么是类型擦除

  泛型信息只存在于代码的编译阶段,在进入JVM运行前,与泛型相关的信息会被擦除为原生类型(List<String>和List<Integer>都会被擦除为原生类型List),若是泛型类,则若指定上限会被擦除为上限类,没指定会被擦除为Object,因此,无论是泛型类,泛型方法,泛型接口在JVM虚拟机(运行阶段)内没有任何区别。

  什么是泛型通配符

  ?:可以接收所有类(默认)
  ?/T extends 类:设置泛型上限,传入的类型只能是泛型上限及其子类。不能修改值(不确定到底传的是哪个子类,因此不能转型)
  ?/T super 类:设置泛型下限,传入的类型只能是泛型下限及其父类。可以取值设置值(子类自动向上转型)

 二、枚举

  枚举的特点

  枚举实例必须在enum关键字生命的类中显示的指定(首行开始的以逗号相隔分号结束),除此之外没有任何方式可以手动创建枚举实例(new,clone,反射,序列化),枚举类默认继承java.lang.Enum(非Object),因此不能继承其他类但可以实现接口,枚举类默认被final修饰因此没有子类,枚举构造器只能使用private修饰(无论隐式显式)。实际上,枚举类经过编译后会生成一个类,所有枚举类对象都会生成一个具体的类实例,且是在编译后类的静态域中进行初始化(public static final),因此枚举对象都是线程安全的,枚举类对外提供values()方法用以获取当前枚举类的所有实例。

  枚举的原理->每一个枚举类型及其定义的枚举变量在JVM中都是唯一的
   枚举类型拥有的实例在编写的时候就已经确定,不能通过其他手段进行创建,且枚举变量在jvm有且只有一个对应的实例

  类加载时创建,保证线程安全:编译后在静态域中进行初始化,静态域在类加载阶段进行初始化,由JVM保证是线程安全的。
  对序列化进行特殊处理,防止反序列化时创建新的对象:序列化仅对枚举对象的name属性进行序列化,反序列化直接调用valueOf()。
  私有化构造函数:无法直接new对象
  无法使用clone()及反射创建枚举对象

  枚举的使用

  枚举常量用于switch语句,对传入值进行类型检查(枚举类型是类型安全的

 三、注解

注解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值