当前位置: 首页 > article >正文

75-java 泛型限定

在Java中,可以使用泛型限定(Generic Bounds)来限制传入泛型类型参数的范围。这样可以确保泛型类只接受特定的类型,或者至少是满足某些条件的类型。

泛型限定有两种形式:

  1. 上限限定(Upper Bounds):使用extends关键字,表示参数化的类型必须是指定的类型或其子类。

  2. 下限限定(Lower Bounds):使用super关键字,表示参数化的类型必须是指定的类型或其父类型。

下面是一个使用泛型限定的例子:

import java.util.List;
 
public class GenericBoundsExample {
 
    // 使用上限限定,确保T是Number类型或其子类
    public static <T extends Number> void printList(List<T> list) {
        for (T element : list) {
            System.out.println(element);
        }
    }
 
    // 使用下限限定,确保T是String类型或其父类型(例如Object)
    public static <T super String> void printString(T t) {
        System.out.println(t.toString());
    }
 
    public static void main(String[] args) {
        List<Integer> intList = List.of(1, 2, 3, 4, 5);
        List<String> stringList = List.of("Hello", "World");
        List<Double> doubleList = List.of(1.1, 2.2, 3.3);
 
        printList(intList); // 正常打印
        // printList(stringList); // 编译错误,String不是Number的子类
        // printList(doubleList); // 编译错误,Double不是Number的子类
 
        printString("test"); // 正常打印传入的字符串
        // printString(new Object()); // 编译错误,传入的类型不是String的父类
    }
}

在这个例子中,printList方法使用了上限限定,它确保传入的List只能包含Number类型或其子类型的元素。printString方法使用了下限限定,它确保传入的类型是String类型或其父类型。这样可以在编译时确保类型安全。


http://www.kler.cn/a/297774.html

相关文章:

  • 【数学分析笔记】第3章第2节 连续函数(1)
  • 如何使用 LLM 辅助用户故事编写
  • CleanMyMac X2024破解版mac电脑清理工具
  • TCP的传输速度
  • 【AI新纪元】OpenAI推出GPT-4o mini:GPT-3.5将成过去式?
  • 海外云手机有哪些推荐?
  • 问:聊一下NIO模型在Netty框架中的用法?
  • 使用信号量实现限流器:Python 实践指南
  • 1.初识ChatGPT:AI聊天机器人的革命(1/10)
  • node.js框架StrongLoop快速入门实战
  • 物联网之ESP32配网方式、蓝牙、WiFi
  • 第J3周:DenseNet算法实战与解析(TensorFlow版)
  • 苹果系统安装的QT程序无法显示窗口问题的解决办法
  • 共享单车轨迹数据分析:以厦门市共享单车数据为例(二)
  • 深入解析五大 LLM 可视化工具:Langflow、Flowise、Dify、AutoGPT UI 和 AgentGPT
  • C语言从头学55——学习头文件errno.h、float.h
  • 跨域(Cross-Origin)问题概述与后端解决方案(CORS(跨域资源共享)、JSONP(JSON with Padding)、代理服务器)
  • golang入门
  • 2.3.1 协程设计原理与汇编实现coroutine
  • 梧桐数据库(WuTongDB):复合索引(Composite Index)的原理讲解、应用场景和基于Python的实现样例