Java-泛型、反射、注解和序列化

25.Java泛型的作用是什么?

  1. 泛型可以理解为一种更安全、更强大的集合。它可以在编译时期检查类型是否正确,这样可以避免强制类型转换带来的危险。
  2. 泛型会进行类型擦除,在类被编译时会被替换成本身支持的原始类型,而原始类型只能是Object类及其子类。所以基本类型在编译时会泛型擦除,而包装类型不会。

26.什么是Java泛型的上下界限定符?

extends表示上界限定符super表示下界限定符

  1. 上界限定符用在参数前面,用来指定类型参数必须继承自哪个类或实现哪个接口。
  2. 下界限定符用在参数后面,用来指定类型参数必须是哪个类或者接口的实例。
  3. 如果即使用了上界限定符又使用了下界限定符,以上界限定符为准

27.你使用过Java中的反射机制吗?如何应用反射?

  1. Java反射机制允许在运行时动态获取类的元数据(如属性、方法、构造器),并可以直接创建对象调用方法
  2. 通过反射,可提前编写通用逻辑(如对象创建、方法执行),以后不论哪个模块都可以直接调用,实现功能复用。例如,Spring框架中@Component注解的Bean管理,正是通过反射解析类信息调用构造器实例化对象。

28.Java中的注解原理是什么?

注解就是一种标签,用来描述被标记数据的某种特性。所有的注解都是使用元注解生成的,Inherited元注解表示这个注解是可以被继承的。

29.java中的序列化和反序列化是什么?

  1. 序列化就是将对象转换为字节流的过程,可以在网络中传输。在java中提供了Serializable接口用于序列化,只要类实现这个接口,就能将类的对象序列化。
  2. 反序列化是将字节流重新转换为对象的过程,就是从存储中重新读取数据并重新创建对象。如果有些字段不需要被序列化,比如敏感数据,可以使用transient关键字标识字段。
  3. 在序列化的过程中每个Serializable类都应该定义一个seriaVersionUID,用于反序列化时验证版本一致性,如果没明确指定,Java会默认生成一个UID,在版本不一致时,反序列化可能失败。
  4. 需要注意的是序列化无法存储静态变量,因为静态变量属于类级别的。而序列化是通过调用对象的writeObjectreadObject方法将对象写入到输出流和读取到输入流的,静态变量由于都不属于对象的一部分,因此调用这两个方法时静态变量都不参与。

你可能感兴趣的:(Java基础,java,开发语言)