【面试题精讲】泛型的使用方式有哪几种?

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

首发博客地址

面试题手册

系列文章地址


泛型的使用方式有以下几种:

  1. 泛型类:定义一个类时,可以在类名后面加上尖括号<>,并在其中指定类型参数。这样,在类中就可以使用这个类型参数来声明属性、方法等。例如:
java 复制代码
public class MyGenericClass<T> {
    private T value;

    public void setValue(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }
}

在上述代码中,MyGenericClass 是一个泛型类,T 是类型参数,可以在类中的属性和方法中使用。

  1. 泛型接口:与泛型类类似,可以在接口名后面加上尖括号<>,并在其中指定类型参数。然后在实现该接口时,需要指定具体的类型。例如:
java 复制代码
public interface MyGenericInterface<T> {
    void doSomething(T value);
}

public class MyImplementation implements MyGenericInterface<String> {
    @Override
    public void doSomething(String value) {
        System.out.println("Doing something with " + value);
    }
}

在上述代码中,MyGenericInterface 是一个泛型接口,T 是类型参数。MyImplementation 类实现了 MyGenericInterface 接口,并指定了类型参数为 String

  1. 泛型方法:在普通类或者非泛型类中,可以定义一个泛型方法,即在方法返回值前面加上尖括号<>,并在其中指定类型参数。例如:
java 复制代码
public class MyGenericMethod {
    public <T> void printValue(T value) {
        System.out.println("Value: " + value);
    }
}

在上述代码中,printValue 是一个泛型方法,<T> 是类型参数,在方法中可以使用这个类型参数。

  1. 通配符 :有时候我们可能不关心具体的类型参数,只需要保证它是某种类型或者其子类即可。这时可以使用通配符来表示未知类型。通配符有两种形式:? extends T 表示类型参数是 T 或者 T 的子类;? super T 表示类型参数是 T 或者 T 的父类。例如:
java 复制代码
public void processList(List<? extends Number> list) {
    for (Number number : list) {
        // do something with number
    }
}

public void addToList(List<? super Integer> list) {
    list.add(1);
}

在上述代码中,processList 方法接收一个列表,其中元素的类型必须是 Number 或者 Number 的子类。addToList 方法接收一个列表,其中元素的类型必须是 Integer 或者 Integer 的父类。

以上就是泛型的几种使用方式。通过使用泛型,可以增加代码的灵活性和安全性,使得代码更加通用和易于维护。

本文由mdnice多平台发布

相关推荐
嘻嘻嘻嘻嘻嘻ys11 分钟前
《Vue 3.3响应式革新与TypeScript高效开发实战指南》
前端·后端
暮乘白帝过重山20 分钟前
路由逻辑由 Exchange 和 Binding(绑定) 决定” 的含义
开发语言·后端·中间件·路由流程
CHQIUU24 分钟前
告别手动映射:在 Spring Boot 3 中优雅集成 MapStruct
spring boot·后端·状态模式
广西千灵通网络科技有限公司34 分钟前
基于Django的个性化股票交易管理系统
后端·python·django
CodeFox42 分钟前
动态线程池 v1.2.1 版本发布,告警规则重构,bytebuddy 替换 cglib,新增 jmh 基准测试等!
java·后端
tonydf1 小时前
0帧起手本地跑一下BitNet
后端·ai编程
zzmgc41 小时前
常用JVM配置参数
后端
金融数据出海1 小时前
使用PHP对接印度股票市场数据
后端
[email protected]1 小时前
ASP.NET Core自动事务ActionFilter
后端·asp.net·.netcore
XiaoLeisj1 小时前
【设计模式】深入解析代理模式(委托模式):代理模式思想、静态模式和动态模式定义与区别、静态代理模式代码实现
java·spring boot·后端·spring·设计模式·代理模式·委托模式