0

0

如何使用通配符强化Java的泛型效能

王林

王林

发布时间:2023-04-23 08:04:20

|

1103人浏览过

|

来源于亿速云

转载

    使用通配符增强泛型

    1.题目

    泛型是java重要的特性,使用泛型编程,可以使代码复用率提高。

    实现:在泛型方法中使用通配符

    2.解题思路

    创建一个类:WildcardsTest。

    创建一个方法getMiddle()用于获得给定列表的中间值。

    在泛型中,使用“?”作为通配符,通配符的使用与普通的类型参数类似,如通配符可以利用extends关键字来设置取值的上限。如

    立即学习Java免费学习笔记(深入)”;

    表示Byte,Double,Float,Integer都适合这个类型参数。

    还有,有上限,也有下限,如

    super Number>

    w含义是类型参数是Number类的父类,如Object.

    3.代码详解

    package com.xiaoxuzhu;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    /**
     * Description:
     *
     * @author xiaoxuzhu
     * @version 1.0
     *
     * 
     * 修改记录:
     * 修改后版本	        修改人		修改日期			修改内容
     * 2022/5/10.1	    xiaoxuzhu		2022/5/10		    Create
     * 
     * @date 2022/5/10  */ public class WildcardsTest {     public static Object getMiddle(List extends Number> list) {         return list.get(list.size() / 2);     }     public static void main(String[] args) {         List ints = new ArrayList();         ints.add(1);         ints.add(2);         ints.add(3);         System.out.print("整型列表的元素:");         System.out.println(Arrays.toString(ints.toArray()));         System.out.println("整型列表的中间数:" + getMiddle(ints));         List doubles = new ArrayList();         doubles.add(1.1);         doubles.add(2.2);         doubles.add(3.3);         System.out.print("浮点列表的元素:");         System.out.println(Arrays.toString(doubles.toArray()));         System.out.println("浮点列表的中间数:" + getMiddle(doubles));     } }

    Java怎么使用通配符实现增强泛型

    知识点补充

    泛型

    可以用等进行泛型的声明。其中的声明方式限定了T的范围,T只能为 User的子类。

    1.参数类型用在类的创建中,泛型类。

    瑞宝通JAVA版B2B电子商务系统
    瑞宝通JAVA版B2B电子商务系统

    瑞宝通B2B系统使用当前流行的JAVA语言开发,以MySQL为数据库,采用B/S J2EE架构。融入了模型化、模板、缓存、AJAX、SEO等前沿技术。与同类产品相比,系统功能更加强大、使用更加简单、运行更加稳 定、安全性更强,效率更高,用户体验更好。系统开源发布,便于二次开发、功能整合、个性修改。 由于使用了JAVA开发语言,无论是在Linux/Unix,还是在Windows服务器上,均能良好运行

    下载

    2.参数类型用在接口的创建中,泛型接口。

    3.参数类型用在方法的创建中,泛型方法。注意泛型的声明位置,在方法的修饰符之后,返回值类型之前。

    ? 类型通配符

    通配符的几种形式:

    1.无限定通配符,>。

    2.上限通配符, extends User>。表示参数类型只能是User的子类。

    3.下限通配符, super User>。表示参数类型只能是User的父类。

    public class P {
      private T t;
      public T getT(){
        return t;
      }
    
      //通配符
      //设置指定类型的范围,超过范围就会报错
      //extends : 指定范围必须是其(这里是List)子类
      public void set(P list){
        return;
      }
    
      //super : 指定类型必须是其(这里是List)父类
      public void setSuper(P list){
        return;
      }
    
      public static void main(String[] args) {
        new P(); //T会被替换成String
        new P(); //T会被替换成Integer
        Person person = new Person();//T会被替换成String,B会被替换成List...
        person.eat("鱼");
      }
    }
    class User{//这里给类的泛型指定范围,T必须要继承类P。
    
    }
    //一个类可以同时指定多个泛型
    class Person{
      private T t;
      private B b;
      private S s;
      private N n;
      public void eat(T t){
        this.t = t;
        System.out.println("我正在吃"+this.t);
      }
    }

    泛型的声明表明,在类、接口、方法的创建中,要使用一个未知的数据类型。它可以是Integer类型,也可以是String类型。就把它的类型定义成 T 、S 或者是N等等。

    在实例化的时候,就必须声明T具体是一个什么类型。

    在定义泛型对象的使用方法时,还不知道T是什么类型,它可能是String类型,也可能是Integer类型。如果,把T定义成一个确定的泛型数据类型,参数就只能是这种数据类型。此时,就用到了通配符代替确定的泛型数据类型。

    使用泛型、通配符提高了代码的复用性。

    把一个对象分为声明、使用两部分的话。泛型侧重于类型的声明上代码复用,通配符则侧重于使用上的代码复用。泛型用于定义内部数据类型的不确定性,通配符则用于定义使用的对象类型不确定性。

    相关文章

    java速学教程(入门到精通)
    java速学教程(入门到精通)

    java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    java
    java

    Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    841

    2023.06.15

    java正则表达式语法
    java正则表达式语法

    java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

    742

    2023.07.05

    java自学难吗
    java自学难吗

    Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

    737

    2023.07.31

    java配置jdk环境变量
    java配置jdk环境变量

    Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

    397

    2023.08.01

    java保留两位小数
    java保留两位小数

    Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

    399

    2023.08.02

    java基本数据类型
    java基本数据类型

    java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

    446

    2023.08.02

    java有什么用
    java有什么用

    java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

    430

    2023.08.02

    java在线网站
    java在线网站

    Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

    16926

    2023.08.03

    Java JVM 原理与性能调优实战
    Java JVM 原理与性能调优实战

    本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

    19

    2026.01.20

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Kotlin 教程
    Kotlin 教程

    共23课时 | 2.7万人学习

    C# 教程
    C# 教程

    共94课时 | 7.1万人学习

    Java 教程
    Java 教程

    共578课时 | 48.3万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号