• java面试强基(12)


     

    什么是泛型?有什么作用? 

    Java 泛型(Generics) 是 JDK 5 中引入的一个新特性。使用泛型参数,可以增强代码的可读性以及稳定性。

    编译器可以对泛型参数进行检测,并且通过泛型参数可以指定传入的对象类型。

    比如 ArrayList persons = new ArrayList() 这行代码就指明了该 ArrayList 对象只能传入 Persion 对象,如果传入其他类型的对象就会报错。

    ArrayList extends AbstractList
    

    并且,原生 List 返回类型是 Object ,需要手动转换类型才能使用,使用泛型后编译器自动转换。 

    泛型的使用方式有哪几种?

    泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。

    1.泛型类:

    1. //此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型
    2. //在实例化泛型类时,必须指定T的具体类型
    3. public class Generic{
    4. private T key;
    5. public Generic(T key) {
    6. this.key = key;
    7. }
    8. public T getKey(){
    9. return key;
    10. }
    11. }

    如何实例化泛型类: 

    Generic genericInteger = new Generic(123456);
    

    2.泛型接口 :

    1. public interface Generator {
    2. public T method();
    3. }

    实现泛型接口,不指定类型: 

    1. class GeneratorImpl implements Generator{
    2. @Override
    3. public T method() {
    4. return null;
    5. }
    6. }

    实现泛型接口,指定类型: 

    1. class GeneratorImpl implements Generator{
    2. @Override
    3. public String method() {
    4. return "hello";
    5. }
    6. }

    3.泛型方法 :

    1. public static < E > void printArray( E[] inputArray )
    2. {
    3. for ( E element : inputArray ){
    4. System.out.printf( "%s ", element );
    5. }
    6. System.out.println();
    7. }
    1. // 创建不同类型数组: Integer, Double 和 Character
    2. Integer[] intArray = { 1, 2, 3 };
    3. String[] stringArray = { "Hello", "World" };
    4. printArray( intArray );
    5. printArray( stringArray );

    注意: public static < E > void printArray( E[] inputArray ) 一般被称为静态泛型方法;在 java 中泛型只是一个占位符,必须在传递类型后才能使用。类在实例化时才能真正的传递类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数,静态的方法的加载就已经完成了,所以静态泛型方法是没有办法使用类上声明的泛型的。只能使用自己声明的。 

  • 相关阅读:
    DBPack 读写分离功能发布公告
    MHA高可用配置及故障切换
    stm32之中断
    Go语言学习笔记—golang指针与结构体
    为win11家庭中文版开启组策编辑器
    Java 面试题 —— TCP 粘包、拆包问题
    洛谷 P8420 [THUPC2022 决赛] 匹配 题解--zhengjun
    【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF
    Mac装机清理工具CleanMyMac2022最新版功能介绍
    HCIA-MSTP替代技术之设备堆叠
  • 原文地址:https://blog.csdn.net/m0_62436868/article/details/128047427