首页 > 其他分享 > 泛型

泛型

时间:2023-08-14 14:31:38浏览次数:43  
标签:show ArrayList Ye class 泛型 public

1、自定义泛型的两种方式:

①、使用类名后面定义的泛型(所有方法都能用)

格式:直接在类名后面加上<类型>

②、在方法申明上定义自己的泛型(只有当前方法能用)

格式: 修饰符<类型>(这个必须写在修饰符后面,如果有多个修饰符,则放在最后一个的后面)返回值类型 方法名(类型 变量名){}

2、泛型的继承和通配符

2.1、泛型不具备继承性,证明在传递参数的时候泛型写的时什么类型,那么在传递参数的时候就只能传递什么类型。如下所示:

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        //创建爷父子的对象
        ArrayList<Ye> ye = new ArrayList<>();
        ArrayList<Fu> fu = new ArrayList<>();
        ArrayList<Zi> zi = new ArrayList<>();
        
        //show方法的形参为爷
        show(ye);
        show(fu);       //报错
        show(zi);       //报错
        
    }

    public static void show(ArrayList<Ye> array){

    }

}

class Ye{

}

class Fu extends Ye{

}

class Zi extends Fu{

}

2.2、要解决上面的问题,可以使用泛型的通配符(可以限制泛型类型的范围)

? extends E:表示可以传递E或者E所有的子类类型

?super E:表示可以传递E或者E所有的父类类型

解决如下:

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        //创建爷父子的对象
        ArrayList<Ye> ye = new ArrayList<>();
        ArrayList<Fu> fu = new ArrayList<>();
        ArrayList<Zi> zi = new ArrayList<>();

        //show方法的形参为爷
        show(ye);
        show(fu);       //报错
        show(zi);       //报错

    }

    public static void show(ArrayList<? extends Ye> array){     //解决方案,表示这里必须用Ye或者Ye的子类

    }

}

class Ye{

}

class Fu extends Ye{

}

class Zi extends Fu{

}

标签:show,ArrayList,Ye,class,泛型,public
From: https://blog.51cto.com/u_15433911/7076979

相关文章

  • 究极鬼畜:泛型auto
    究极鬼畜:泛型auto零前言C++作为一门强大的语言,标准库中为我们提高了许多相当实用的模板。然而有时候你(其实整个机房就我一个)又自己有一些代码,想转化为一个封装好的板子。这时候,你就不得不接触泛型编程了。那个auto是为了押韵乱加的,虽然auto确实可以用来泛型……由于......
  • hutool包将json串转为泛型类出现转换异常
    hutool包将json串转为泛型类出现转换异常问题描述:在使用hutool包的toBean方法转换json为泛型类之后,去获取泛型类的某个字段出现报错。java.lang.ClassCastException:cn.hutool.json.JSONObjectcannotbecasttoXXXX造成原因:当使用JSONUtil将一串json转为一个泛型类,且指定转换......
  • C# 中关于 T 泛型【C# 基础】
    〇、前言C#里面的泛型不仅可以使用泛型函数、泛型接口,也可以使用泛型类、泛型委托等等。在使用泛型的时候,它们会自行检测你传入参数的类型,因此它可以为我们省去大量的时间,不用一个个编写方法的重载。与此同时,使用泛型会提升程序的效率。本文将围绕泛型的各个方面,详细看下泛型到......
  • javaee 泛型的上下边界和通配符的使用
    下边界packagecom.test.generic;importjava.util.Collection;publicclassTestGenericClass{ //泛型方法?extendsE:泛型的限定 publicstatic<E>voidmove(Collection<E>from,Collection<?superE>to) { for(Ee:from) { to.add(e......
  • javaee 创建泛型方法
    packagecom.test.generic;importjava.util.Collection;publicclassTestGenericClass{ //泛型方法?extendsE:泛型的限定 publicstatic<E>voidmove(Collection<E>from,Collection<?superE>to) { for(Ee:from) { to.add(e);......
  • 【JAVA】探索泛型与数据结构:解锁高效编程
    引言在当今信息爆炸的时代,数据结构和算法成为了程序员必备的核心技能。而泛型作为Java语言中的一项强大特性,为数据结构和算法的实现提供了更高效、更安全的方式。本文将深入探讨泛型的概念、使用场景以及结合数据结构的应用,为您打开高效编程之道。第一部分:了解泛型1.1为什么使......
  • Apache Rocket MQ 组件 (泛型应用)
     一、实现 importjava.util.Map;importjava.util.concurrent.ConcurrentHashMap;importorg.apache.commons.lang3.StringUtils;importorg.apache.rocketmq.client.consumer.DefaultMQPushConsumer;importorg.apache.rocketmq.client.consumer.listener.MessageList......
  • C#泛型知识点
    当使用C#编程时,泛型是一种非常强大和有用的功能。泛型允许您编写可重用的代码,以处理不同的数据类型,同时提供类型安全和更高的性能。本篇博客将介绍C#泛型的基本概念、用法和示例代码,以帮助您更好地理解和使用泛型。C#泛型-强大的类型安全在传统的C#编程中,我们通常会使用Object......
  • ts中的泛型
    在TypeScript中我们会使用泛型来对函数的相关类型进行约束这里的函数同时包含class的构造函数因此一个类的声明部分也可以使用泛型那么什么是泛型?如果通俗的理解泛型呐?什么是泛型泛型(Generics)是指在定义函数接口或类的时候不预先指定具体的类型而在使用......
  • 每个.NET开发都应掌握C#泛型的知识点
    C#泛型编程是.NETframework2.0的新特征,它提高了代码安全性和代码重用的问题。由于泛型必须指定类型,正确的使用可以避免了装箱拆箱的问题;使用了泛型后,可以将算法或组件泛型化,基于类型参数支持任意数据类型,从而提高了代码的重用性。C#泛型编程在C#是很重要的特性,建议.NET开发熟......