前言

深入讨论Java的泛型与注解在面试中,有助于展示面试者对Java高级特性的掌握程度和应用能力。通过具体例子和实际应用场景来展示这些特性的优势和应用方式,将有助于提升面试者在面试中的竞争力。继上一篇2024最全Android面试题及答案整理2【持续更新】之后,今天给大家分享2024最全Android面试题及答案整理3【持续更新】,有需要的朋友可以收藏了。

2024最全Android面试题及答案整理3【持续更新】_List

Java深入泛型与注解面试题汇总

3.1 泛型是什么,泛型擦除呢?

  • 这道题想考察什么?
    泛型
  • 考察的知识点
    泛型的特点和优缺点以及泛型擦除
  • 考生应该如何回答
    泛型就是一种就是一种不确定的数据类型。在Java中有着重要的地位,在面向对象编程及各种设计模式
    中都有非常广泛的应用。
    泛型的优点
    我们为什么需要使用泛型:
  1. 适用于多种数据类型执行相同的代码,例如两个数据相加:
    不同的类型,我们就需要增加不同的方法,但是使用泛型那我们的代表将变为:
  2. 编译检查,例如下面代码
    因为我们指定了List泛型类型为String,因此在代码1处编译时会报错。而在代码2处,不再需要做类型强
    转。
    泛型的缺点
  3. 静态域或者方法里不能引用泛型变量,因为泛型是在new对象的时候才知道,而类的构造方法是在
    静态变量之后执行。
  4. 不能捕获泛型类对象
    泛型擦除
    Jdk中实现的泛型实际上是伪泛型,例如泛型类 Fruit ,编译时 T 会被擦除,成为 Object。但是泛型
    擦除会带来一个复杂的问题:
public int addInt(int x,int y){
return x+y;
}
public float addFloat(float x,float y){
return x+y;
}
public <T> T addInt(T x,T y){
return x+y;
}
List<String> list = new ArrayList();
list.add(10);//①
list.add("享学");
String name = list.get(2);//②
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

Parent类是一个泛型类,在经过编译时泛型擦除后其中 setSrc(T) 将会变为 setSrc(Object) ;而
Child类继承与Parent并且指定了泛型类型为String。那么经过编译后这两个类应该变为:
父类存在 setSrc(Object) ,而子类则是 setSrc(String) 。这明显是两个不同的方法,按照Java的重
写规则,子类并没有重写父类的方法,而是重载。

3.2 List能否转为List

  • 这道题想考察什么?
    掌握PECS原则,灵活运用泛型
  • 考察的知识点
    泛型上下边界
  • 考生应该如何回答
    在Java的泛型语法中,可以使用super和extends关键字指定泛型的上下边界。
    extends
    ? extends T 为上界通配符,也就是说限制类型只能是T 或者 T 的派生类,比如我们存在代表水果的
    Fruit类,代表苹果的Apple类以及代表香蕉的Banana类。苹果与香蕉都是水果,因此:
    那么下面我们使用List集合作为盘子来装水果:
    但是当我们希望往plates中放入苹果或者香蕉时会发现,plates中无法放入任何元素,只能从plates中取
    出元素。

3.3 Java的泛型中super 和 extends 有什么区别?

List<? super Fruit> plates = new ArrayList<>();
Fruit fruit = plates.get(0);//Error
Apple apple = plates.get(0);//Error
Object object = plates.get(0);
plates.add(new Apple());
plates.add(new Banana());
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

下界<? super T>不影响往里存,但往外取只能放在Object对象里。因为List<? super Fruit> 代表该容器
元素是Fruit或者Fruit的超类。向容器中存储数据,只需要数据类型是Fruit的派生类即可,因为苹果是水
果Fruit,香蕉也是水果Fruit。但是取数据时,无法得知取出来的数据到底时什么类型,所以只能使用
Object来表示。
PECS原则
PECS原则即Producer Extends Consumer Super ,生产使用extends,消费使用super。结合上下界的
特点可知:
经常读取数据,使用Extends;
经常加入数据,使用Super;

3.4 注解是什么?有哪些使用场景?(滴滴)

  • 这道题想考察什么?
    Java基础,高级语言特性
  • 考察的知识点
    注解与其应用场景
  • 考生如何回答
    Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 注解是元数据的一种形式,
    提供有关于程序但不属于程序本身的数据。注解本身没有特殊意义,对它们注解的代码的操作没有直接
    影响。
    按照@Retention 元注解定义的注解保留级,注解可以一般常见于以下场景使用:
    SOURCE
    RetentionPolicy.SOURCE ,作用于源码级别的注解,在类中使用 SOURCE 级别的注解,其编译之后的
    class中会被丢弃。可提供给Lint 检查、APT等场景使用。

写在最后

第一章 算法和数据结构面试题汇总

2024最全Android面试题及答案整理3【持续更新】_android_02

第二章 Java核心基础面试题汇总

2024最全Android面试题及答案整理3【持续更新】_android_03

第三章 Java深入泛型与注解面试题汇总

2024最全Android面试题及答案整理3【持续更新】_泛型_04

第四章 Java并发编程面试题汇总

2024最全Android面试题及答案整理3【持续更新】_android_05

第五章 Java虚拟机原理面试题汇总

2024最全Android面试题及答案整理3【持续更新】_List_06

第六章 Java反射类加载与动态代理面试题汇总

2024最全Android面试题及答案整理3【持续更新】_android_07

第七章 网络编程面试题汇总

2024最全Android面试题及答案整理3【持续更新】_android_08

第九章 高级UI面试题汇总

2024最全Android面试题及答案整理3【持续更新】_List_09

第十章 Framework内核解析面试题汇总

2024最全Android面试题及答案整理3【持续更新】_List_10

第十一章 Android组件内核面试题汇总

2024最全Android面试题及答案整理3【持续更新】_Java_11

第十二章 程序性能优化与数据持久化面试题汇总

2024最全Android面试题及答案整理3【持续更新】_android_12

第十三章 开源框架面试题汇总

2024最全Android面试题及答案整理3【持续更新】_android_13