首页 > 其他分享 >泛型中的 K、T、V、E、?、Object 等分别代表什么含义

泛型中的 K、T、V、E、?、Object 等分别代表什么含义

时间:2024-09-12 10:53:17浏览次数:10  
标签:示例 含义 Object content 类型 泛型 public

泛型中的 K、T、V、E、?、Object 等分别代表什么含义

作为一名编程博客专家,我将带领大家深入探讨泛型中的各种类型参数,如 K、T、V、E、?、Object 等,这些参数在 Java 和其他编程语言中扮演着重要的角色。本文将详细解释这些参数的含义、用途以及如何在实际编程中应用它们。

前置知识

在深入探讨之前,我们需要了解一些基本概念:

  1. 泛型(Generics):泛型是 Java 语言的一项特性,允许你在定义类、接口和方法时使用类型参数。这使得代码更加通用和类型安全。
  2. 类型参数(Type Parameter):类型参数是泛型中的占位符,用于表示实际类型。
泛型类型参数详解
1. T(Type)

T 是最常用的泛型类型参数,代表一个类型。它可以是任何类型,如 StringInteger 等。

示例代码:

public class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

解释:

  • Box<T> 是一个泛型类,T 是一个类型参数。
  • setContent 方法接受一个 T 类型的参数,并将其存储在 content 变量中。
  • getContent 方法返回 T 类型的值。

使用示例:

Box<String> stringBox = new Box<>();
stringBox.setContent("Hello, World!");
String content = stringBox.getContent();
System.out.println(content); // 输出: Hello, World!
2. K(Key)和 V(Value)

KV 通常用于表示键值对中的键和值。例如,在 Map 接口中,K 表示键的类型,V 表示值的类型。

示例代码:

public class Pair<K, V> {
    private K key;
    private V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public K getKey() {
        return key;
    }

    public V getValue() {
        return value;
    }
}

解释:

  • Pair<K, V> 是一个泛型类,KV 是类型参数。
  • Pair 类包含一个键 key 和一个值 value
  • getKey 方法返回 K 类型的键,getValue 方法返回 V 类型的值。

使用示例:

Pair<String, Integer> pair = new Pair<>("age", 30);
String key = pair.getKey();
Integer value = pair.getValue();
System.out.println(key + ": " + value); // 输出: age: 30
3. E(Element)

E 通常用于表示集合中的元素类型。例如,在 List 接口中,E 表示列表中元素的类型。

示例代码:

public class CustomList<E> {
    private List<E> elements = new ArrayList<>();

    public void add(E element) {
        elements.add(element);
    }

    public E get(int index) {
        return elements.get(index);
    }
}

解释:

  • CustomList<E> 是一个泛型类,E 是类型参数。
  • add 方法接受一个 E 类型的元素,并将其添加到列表中。
  • get 方法返回列表中指定索引处的 E 类型元素。

使用示例:

CustomList<String> stringList = new CustomList<>();
stringList.add("Java");
stringList.add("Python");
String firstElement = stringList.get(0);
System.out.println(firstElement); // 输出: Java
4. ?(Wildcard)

? 表示通配符,用于表示未知类型。通配符可以用于方法参数、返回类型或局部变量中。

示例代码:

public void printList(List<?> list) {
    for (Object element : list) {
        System.out.println(element);
    }
}

解释:

  • printList 方法接受一个 List<?> 类型的参数,表示可以接受任何类型的列表。
  • 使用 Object 类型的元素遍历列表,并打印每个元素。

使用示例:

List<String> stringList = Arrays.asList("A", "B", "C");
printList(stringList); // 输出: A B C
5. Object

Object 是 Java 中的根类,所有类都直接或间接继承自 Object。在泛型中,Object 可以用于表示任何类型,但由于缺乏类型安全,通常不推荐使用。

示例代码:

public class BoxObject {
    private Object content;

    public void setContent(Object content) {
        this.content = content;
    }

    public Object getContent() {
        return content;
    }
}

解释:

  • BoxObject 类使用 Object 类型来存储内容。
  • setContent 方法接受一个 Object 类型的参数,并将其存储在 content 变量中。
  • getContent 方法返回 Object 类型的值。

使用示例:

BoxObject box = new BoxObject();
box.setContent("Hello, World!");
String content = (String) box.getContent();
System.out.println(content); // 输出: Hello, World!
总结

通过本文的讲解,我们详细了解了泛型中的各种类型参数,包括 TKVE?Object。这些参数在实际编程中非常有用,能够提高代码的通用性和类型安全性。希望本文能够帮助你更好地理解和应用泛型。

如果你有任何问题或需要进一步的解释,请随时提问。编程愉快!

标签:示例,含义,Object,content,类型,泛型,public
From: https://blog.csdn.net/xycxycooo/article/details/141571532

相关文章

  • POI常见包名称含义,常见HSSF,SXXF,SXSSF区别
    Java单元格合并后边框消失了在使用Java编写Excel文件时,经常会遇到合并单元格的需求。单元格合并可以使表格更加美观,同时减少重复的内容。然而,有时候在合并单元格后会发现边框消失了,这给我们带来了困惑。本文将介绍这个问题的原因以及解决方法,并提供相应的代码示例。问题描述当我......
  • 『功能项目』GameObject对象池 - 第三职业【39】
    本章项目成果展示我们打开上一篇38管理器基类的项目,本章要做的事情是利用对象池制作第三个职业——魔法师在GameRoot对象下创建空物体重命名为PoolRoot将GameRoot拖拽至预制体创建脚本:编写脚本:PoolManager.csusingUnityEngine;publicclassPoolManager:M......
  • python中Tkinter常用控件含义
    #python中Tkinter常用控件Button'按钮控件;在程序中显示按钮。'Canvas'画布控件;显示图形元素如线条或文本'Checkbutton'多选框控件;用于在程序中提供多项选择框'Entry'输入控件;用于显示简单的文本内容'Frame......
  • 陶瓷电容代码含义
    NPO与X7R、X5R、Y5V、Z5U等不同代码的电容有什么区别?主要是介质材料不同。不同介质种类由于它的主要极化类型不一样,其对电场变化的响应速度和极化率亦不一样。在相同的体积下的容量就不同,随之带来的电容器的介质损耗、容量稳定性等也就不同。介质材料划按容量的温度稳定性可以分......
  • Python 中的 super(类名, self).__init__() 的含义
    Questionpytorch中定义的神经网络类的__init__()中,经常定义super(类名,self).__init__(),解释下这句话。比如:classTestNN(nn.Module):#初始化函数def__init__(self,parm1,...): super(TestNN,self).__init__() passAnswer这其实是python中的魔术......
  • RapidJSON 的坑--允许Object对象存在相同的key,且key为数字时序列化报异常
    RapidJSON的坑--允许Object对象存在相同的key,且key为数字时序列化报异常测试代码如下:1voidshow(rapidjson::Document&doc)2{3printf("-----------------foriterator\nMemberCount:%d\n",doc.MemberCount());4for(autoit=doc.MemberBegin();it!=doc......
  • VBA高级应用30例应用3在Excel中的ListObject对象:循环列出当前工作表中的表
    《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序,写好的程序可以升级。本套教程共三册三......
  • flutter开发Invalid argument(s): Illegal argument in isolate message: object is u
    Invalidargument(s):Illegalargumentinisolatemessage:objectisunsendable-Library:'dart:async'Class1.问题原因:使用flutterisolate的时候新开的isolate访问了其他isolate的变量导致的比如下面例子是错误的写法:finalzhangsan="张三";//这里变量是主隔......
  • 常见的网站错误码及其含义
    一、1xx信息性状态码100Continue:表示目前为止一切正常,客户端可以继续发送请求或者忽略这个响应。101SwitchingProtocols:服务器根据客户端的请求切换协议。二、2xx成功状态码200OK:请求成功,一般用于GET和POST请求。201Created:请求成功并且服务器创建了新的资源。202Accep......
  • Objective-C 动态调用秘籍:NSInvocation 的魔法
    标题:Objective-C动态调用秘籍:NSInvocation的魔法在Objective-C编程中,NSInvocation是一个强大的工具,它允许你在运行时动态地调用方法。这种能力对于实现诸如方法拦截、依赖注入、或者在不知道方法签名的情况下调用方法等高级功能至关重要。本文将深入探索NSInvocation的使用方法,并......