JAVA泛型

Java 泛型中的通配符详解 可以使用上界通配符来放宽对变量的限制。例如,你想编写一个方法,该方法适用于List, List 和 List;就可以通过使用上界通配符来实现这一点。声明一个上界通配符,需要使用通配符 ('?'),跟上 extends 关键字,然后再跟它的上界。比如,编写用于 Number 列表和 Number 子类型(如 Integer、Double 和 Float)的方法,可以指定 List 阅读详情
链接:http://www.cnblogs.com/iyangyuan/archive/2013/04/09/3011274.html

Java中的泛型方法

       泛型是什么意思在这就不多说了,而Java中泛型类的定义也比较简单,例如:public class Test<T>{}。这样就定义了一个泛型类Test,在实例化该类时,必须指明泛型T的具体类型,例如:Test<Object> t = new Test<Object>();,指明泛型T的类型为Object。

       但是Java中的泛型方法就比较复杂了。

       泛型类,是在实例化类的时候指明泛型的具体类型;泛型方法,是在调用方法的时候指明泛型的具体类型。

       定义泛型类语法格式如下:

      

       定义泛型对象语法格式如下:

        

       定义泛型方法语法格式如下:

      

       调用泛型方法语法格式如下:

 

       说明一下,定义泛型方法时,必须在返回值前边加一个<T>,来声明这是一个泛型方法,持有一个泛型T,然后才可以用泛型T作为方法的返回值。

       Class<T>的作用就是指明泛型的具体类型,而Class<T>类型的变量c,可以用来创建泛型类的对象。

       为什么要用变量c来创建对象呢?既然是泛型方法,就代表着我们不知道具体的类型是什么,也不知道构造方法如何,因此没有办法去new一个对象,但可以利用变量c的newInstance方法去创建对象,也就是利用反射创建对象。

       泛型方法要求的参数是Class<T>类型,而Class.forName()方法的返回值也是Class<T>,因此可以用Class.forName()作为参数。其中,forName()方法中的参数是何种类型,返回的Class<T>就是何种类型。在本例中,forName()方法中传入的是User类的完整路径,因此返回的是Class<User>类型的对象,因此调用泛型方法时,变量c的类型就是Class<User>,因此泛型方法中的泛型T就被指明为User,因此变量obj的类型为User。

       当然,泛型方法不是仅仅可以有一个参数Class<T>,可以根据需要添加其他参数。

       为什么要使用泛型方法呢?因为泛型类要在实例化的时候就指明类型,如果想换一种类型,不得不重新new一次,可能不够灵活;而泛型方法可以在调用的时候指明类型,更加灵活。


链接:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html

http://www.cnblogs.com/alsf/p/5690052.html

泛型是“参数化类型”,相当于调用方法时,把数据类型作为形参传递给实参。

在方法中,<E>中的E表示类型形参,可以接收具体的类型实参,而无括号的E表示返回类型,即实际参数

<T> T[] toArray(T[] a);

E get(int index);


类型通配符一般是使用 ? 代替具体的类型实参

getData(Box<?> data)
即调用了getData(Box<?> data)方法时,<?>是一种引用类型,引用类型在传递参数时,实际传递的是一个指针

还有

如果使用”?“意味着可以接收任意的内容,但是此内容无法直接使得用”?“修饰的泛型的对象进行修改。如下就会出问题:

package Thread1;
class Info<T>{
    private T var ;        // 定义泛型变量
    public void setVar(T var){
        this.var = var ;
    }
    public T getVar(){
        return this.var ;
    }
    public String toString(){    // 直接打印
        return this.var.toString() ;
    }
};
public class demo1{
    public static void main(String args[]){
        Info<?> i = new Info<String>() ;        // 使用String为泛型类型
        i.setVar("MLDN") ;                            // 设置内容,这里会出错,因为”?“通配符修饰的对象只能接收,不能修改,也就是不能设置。
    }
};


一个类的子类可以通过对象的多态性,为其父类实例化,但是在泛型操作中,子类的泛型类型是无法使用父类的泛型来接收的。

class Info<T>{
    private T var ;        // 定义泛型变量
    public void setVar(T var){
        this.var = var ;
    }
    public T getVar(){
        return this.var ;
    }
    public String toString(){    // 直接打印
        return this.var.toString() ;
    }
};
public class GenericsDemo23{
    public static void main(String args[]){
        Info<String> i1 = new Info<String>() ;        // 泛型类型为String
        Info<Object> i2 = null ;
        i2 = i1 ;                  //这里因为对象泛型类型不同,而出错。
    }
};

泛型对象在调用方法时,必须与泛型方法中的类型<Object>一致



【泛型】Java中的泛型,泛型类,泛型接口,泛型方法,泛型擦除 这篇文章总结一下Java中的泛型相关知识点,包括:泛型概念、泛型优缺点、泛型通配符、泛型上下界、泛型使用(泛型类、泛型接口、泛型方法)、泛型擦除等内容。 一、泛型概念 (1)什么是泛型 什么是泛型??? 泛型(Generic),是一种参数化数据类型,它允许我们在编写程序代码的时候不用具体指定需要什么数据类型,而是等到具体使用的时候,将数据类型以参数的形式传递给程序,这就是泛型程序设计。 (2)为什么需要泛型 我们来看看下面这个栗子 假设现在有个需求,通过集合保存元素,需要保存String字 阅读详情

相关推荐

Cursor锁机了怎么办?实测这个开源插件帮你无限“续杯”,附详细安装与防踩坑指南

本文提供了Cursor锁机问题的详细解决方案,包括使用开源插件`cursor-fake-machine`修改机器标识、锁定配置文件权限以及优化使用规范。同时介绍了如何利用Cursor开发油猴脚本将微信公众号文章高效转换为Markdown格式,提升内容创作效率。

weixin_26805597的博客 767

java 泛型学习记录

意义: 由外部指定具体的操作类型,保证数据的安全性。 class A { private i; public fun( value) } 格式参照如下: 在实例化对象时,不指定泛型的类型,则会将所有的泛型标识符替换成object类型。 通配符 ? 使用通配符可以接受任意的泛型对象,但是只能接收和使用,不能修改对象的内容。 受限泛型 通过设置上线来限制能够传递的引用只能是上限和上限的子类 ...

weixin_43157199的博客 376

基于新张量核范数的TRPCA:多维数据低秩稀疏分解的理论与实践

本文深入探讨了基于新张量核范数的TRPCA(张量鲁棒主成分分析)技术。该技术通过t-product运算和新定义的张量核范数,能有效从多维数据(如视频、彩色图像)中分离低秩背景与稀疏前景/噪声。文章结合理论、核心算法(ADMM、t-SVT)及图像恢复、视频背景建模等实战案例,展示了其在处理复杂多维数据分解任务中的强大优势。

weixin_29173777的博客 269

第六章 集合类 题库

解析:HashSet存储的元素是不可重复的,添加元素时,需要先后调用hashCode()方法和equals()方法比较元素是否相同,但是如果没有重写,程序就会根据Object类中的hashCode()和equals()方式比较,而根据它的比较方式,两个Tom:10是不相等的。如果想要存入顺序和迭代的顺序一致可以使用使用Java中提供的LinkedHashMap类,它是HashMap的子类,和LinkedList一样也使用双向链表来维护内部元素的关系,使Map元素迭代的顺序与存入的顺序一致。

qq_74940664的博客 4957

Palantir的本体论建模跟数仓建模的异同

Palantir的Foundry Ontology通过构建组织的数字孪生体,将数据集和模型映射为对象类型、属性、链接和操作类型,形成完整的语义知识网络。与传统数仓建模相比,本体建模以业务问题为驱动,强调细粒度语义和实时决策能力,采用图语义技术实现灵活的映射关系。

轩哥的个人研究和成长记录 1595

spark 适配达梦数据库

spark 适配达梦数据库 版本 spark3.0.0 scala2.12.10 DM Database Server 64 V8 步骤一: 引驱动包: SBT方式: "com.dameng" % "Dm8JdbcDriver18" % "8.1.0.157", maven方式: <dependency> <groupId>com.dameng</groupId> <artifactId>Dm8JdbcDriver18</artifac

_@Eva@_的博客 2090

java泛型总结

泛型 Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符? Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 Java 的泛型是伪泛型,这是因为 Java 在运行期间,所有的泛型信息都会被擦掉,这也就是通常所说类型擦除 。 List<Integer> list = new ArrayList<>();.

今天吃了吗的博客 1196

【IoT】 产品设计之结构设计:如何设计产品按键

1、硅胶按键功能实现有两种接触方式 1)硅胶按键按压在DOME片(锅仔片)上 通常用在手机、儿童手表手机、防水手机等防水设备上。 2)硅胶按键增加导电基,一种黑色的导电碳粒,实现回路导电 通常用在遥控器、电脑键盘、特殊设备上。 两种方式结构设计原理是一样的,按键的固定与配合间隙与行程要确保好。 2、硅胶遥控器按键的结构方式(导电基) 按键帽为大颗粒实心的,触点为黑色导电基,通过压注成型融合为一体,那么这种按键结构设计时需要注意那些呢? 最主要的是按键按压回弹的手感,由于没有DOME片实现

产品线负责人 8670

java 泛型上下限_泛型-通配符,受限泛型(上限和下限)

掌握通配符“?”的使用。掌握受限泛型的设置。掌握泛型与子类继承的限制。具体内容1.1匹配任意类型的通配符在开发中对象的引用传递(向上向下传递)是最常见的,但是,在泛型的操作中,在进行引用传递的时候泛型类型必须匹配才可以传递,否则不能传递。例如,如下没有进行泛型类型匹配,一个是String,一个是Object类型。packageThread1;class Info{private T var ; ...

weixin_39864601的博客 1089

Python 爬虫实战:全球渔业船舶捕捞记录数据采集与分析全攻略

通过本项目,我们实现了对全球渔业船舶捕捞记录数据的采集、处理和可视化,为渔业资源管理和海洋生态保护提供了数据支持。未来,可以进一步结合机器学习和深度学习技术,对捕捞行为进行预测和分类,提高对非法捕捞活动的识别能力。

2201_76125261的博客 557

小白也能懂!一步步教你用FPGA加速YOLO目标检测(入门篇)

安装到 PYNQ 开发板中。该库为 PYNQ 平台提供了对量化神经网络(如 YOLO)的硬件加速支持。确保你的电脑已连接到外网,如 WiFi 或热点(手机热点理论上也可用,未实测)。当你看到安装成功的提示后,打开 Jupyter Notebook,你会发现在。趁这个机会,泡了杯茶,刷了会儿手机,顺便感慨了一下开源社区的强大……页面中多出了一些新的项目文件夹 —— 这就是我们刚才安装的。参数,浅拷贝只克隆最近一次提交,减少数据量,避免超时问题。初始化,打开该文件,即可运行我们的Tiny YOLO。

FJN110的博客 1597

Java之泛型

一、什么是泛型 1.背景: JAVA推出泛型以前,程序员可以构建一个元素类型为Object的集合,该集合能够存储任意的数据类型对象,而在使用该集合的过程中,需要程序员明确知道存储每个元素的数据类型,否则很容易引发ClassCastException异常。 2.概念: Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许我们在编译时检测到非法的类型数据结构。泛型的本质就是参数化类型,也就是所操作的数据类型被指定为一个参数。 3.好处: 类型安全 消

Beyondczn的博客 9373

【面试系列】数据工程师高频面试题及详细解答

本文针对数据工程师岗位,提供了详尽的面试题库和解答,分为初级、中级和高级三个层次。初级面试题主要涉及基本的数据处理和ETL工具的使用,如SQL查询、数据清洗和基本的数据建模。中级面试题重点考察数据管道设计、数据库优化和大数据平台的应用。高级面试题则深入探讨高级数据处理技术、分布式系统架构和数据湖的实现。通过这些问题和解答,候选人可以全面了解数据工程师岗位所需的技能,帮助其更好地准备面试。常考知识点总结部分则系统归纳了数据工程师岗位的关键技能领域。

在路上的专栏 2375

Java泛型详解:Java泛型集合、泛型类、泛型方法、泛型的使用

在 Java 1.5 之前没有泛型,通常需要使用强制类型转换的方式将一种数据类型转换为另一种数据类型,这种转换要求开发者对实际参数的类型具有可预知性。对于强制类型转换错误的情况,编译器可能不会提示错误,但是在运行时会出现异常,这是一个安全隐患。 为了解决这一隐患,从 Java 1.5 开始提供了泛型。泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。本节将详...

jijiangpeng的博客 7444

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java泛型——为何要有泛型

对于String类类型来说,它是继承自Object的,而Integer的直接父类是Number,因此会有Integer无法转String的错误。泛型类是在实例化类的时候指明泛型的具体类型,那么泛型方法就是在调用方法时指明泛型的具体类型。在实现传入泛型实参的泛型接口的实现类定义中,实现类即使不声明泛型,也不会编译错误。在实现未传入泛型实参的泛型接口的实现类定义中,实现类要声明泛型,否则会编译错误。为了避免这样可能的错误,引入泛型,使编译器在编译阶段就提示不匹配的类类型。方法返回了一个更加特定的返回类型。

xiaovie的博客 1732

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java泛型——泛型类、泛型方法、泛型接口

泛型Java 泛型Java 泛型是什么泛型类泛型类的格式泛型类举例泛型方法泛型方法的格式泛型方法举例泛型接口泛型接口的格式泛型接口举例 Java 泛型 Java 泛型是什么 官方定义: 泛型是Java SE 1.5的新特性,泛型的本质就是参数化类型,也就是说所操作的数据类型被指定为一个参数 这种参数类型可以用在类、接口和方法的创建中,分别成为泛型类、泛型接口、泛型方法 优缺点: ​ 优点:可以不用再类型转换了 ​ 缺点:降低了代码的可读性 泛型类 泛型类:当一个类要操作的引用数据类型不确定的时候,可

一个小小的码农 6597

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java泛型

是同时存在的,可是如果是常规的两个方法,他们的方法签名是一样的,也就是说虚拟机根本不能分别这两个方法。如果是我们自己编写Java代码,这样的代码是无法通过编译器的检查的,但是虚拟机却是允许这样做的,因为虚拟机通过参数类型和返回类型来确定一个方法,所以编译器为了实现泛型的多态允许自己做这个看起来“不合法”的事情,然后交给虚拟器去区别。如果是重载,那么子类中两个setValue方法,一个是参数Object类型,一个是Date类型,可是我们发现,根本就没有这样的一个子类继承自父类的Object类型参数的方法。

YLXCA的博客 1316

Java之泛型,什么是泛型?为什么用泛型?(泛型详解)

1.为什么会有泛型呢? 早期的Object类型可以接受任意的对象类型,但是在实际使用中,会有类型转化的问题,存在隐患,所以Java提供泛型解决这个安全问题 2.什么是泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类...

围巢 3997

Java泛型的其他应用——泛型接口、泛型方法、泛型数组以及泛型的嵌套设置

学习目标 掌握泛型接口的使用 掌握泛型方法的定义的及使用 掌握泛型数组的使用 掌握泛型的嵌套设置 之前所有的操作都是在类中直接使用泛型操作的,那么,对于Java来说,也可以直接在接口中定义及使用泛型。 定义泛型接口 在JDK1.5之后,不仅仅可以声明泛型类,也可以声明泛型接口,声明泛型接口和声明泛型类的语法类似,也是在接口名称后面加上,如下格式所示: [访问权限]

1万+

【 java 泛型】详解java泛型

java泛型可以提高java程序的类型安全,提高程序的可靠性,并且在开发中也较常用,因此还是要简单学习一下!

阿牛的博客 2069

Java 泛型

Java 泛型 Java 泛型(generics)是 JDK 5 中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型信息不会进入到运行时阶段。编译器有效 泛型的三种方式:泛型类、泛型接口、泛型方法 泛型类 定义格式: 修饰符 class 类名<代表泛型的变量> { } 例如,API中的ArrayList集合: class ArrayList<E>{ p

JustToFaith 2955

java 泛型详解(普通泛型、 通配符、 泛型接口,泛型数组,泛型方法

Java代码Java代码Java代码Java代码Java代码Java代码Java代码。

2401_84619530的博客 1533

java泛型

文章目录1. 泛型简述2. 泛型类别2.1 泛型类2.1.1 某种实际类型,重用性不好,Holder只能拥有A类型2.1.2 Object类型,类型太泛,可以容纳所有类型2.1.3 在创建的时候可以指定只可以容纳某种类型,此后只能容纳这种类型注意:基础类型无法作为类型参数,其封装类型可以2.2 泛型接口2.3 泛型方法3. 泛型擦除3.1 泛型只在编译期有效3.2 泛型内部无法获得泛型参数的有关信...

登峰小蚁 3065

java 泛型的默认值_java泛型

1.什么是泛型泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型:泛型类 泛型接口 泛型方法作用:提高程序健壮性,简化代码泛型的默认值是Objectjdk 要1.5以上2.泛型定义/***泛型类*首先定义一个person的实体类 Person其中A代表的就是一个泛型,调用时可以自定义数据类型*/package com.temp;public class Per...

weixin_34246474的博客 1833

Java【泛型】

Java的泛型说明

在下的博客 1468
上一篇: JAVA集合
下一篇: hexo search
code609
博客等级 码龄11年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值