首页 > 编程语言 >Java泛型-类型参数化

Java泛型-类型参数化

时间:2024-09-06 08:54:43浏览次数:8  
标签:arr Java String symbol 参数 str 泛型 public Datas

一. 泛型

解决支持多类型参数的方案:

1, 重载: 在同一个类中,方法名相同,参数不同

不足之处: 代码过于重复

public class Tool{
   public String arrToStr(String[] arr, String symbol){
       String str = "";
       for(String v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
   public String arrToStr(int[] arr, String symbol){
       String str = "";
       for(int v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
   public String arrToStr(double[] arr, String symbol){
       String str = "";
       for(double v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
}

2, 使用Object

好处: 简单

不足: 什么都支持(类型无法得到限制)

public class Tool{
   public String arrToStr(Object[] arr, String symbol){
       String str = "";
       for(Object v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
}

3, 泛型: 广泛的类型(默认为任意类型)

但是泛型可以设置上限(以继承的方式实现)

3.1 定义方法泛型

public class Tool{
   //<X>: 程序员定义的一种数据类型即泛型,泛型名: X
   //X : 默认为Object
   public <X> String arrToStr(X[] arr, String symbol){
       String str = "";
       for(X v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
   
   //设置上限为Number
    public static <X extends Number> String arrToStr(X[] arr, String symbol){
       String str = "";
       for(X v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
}

3.2 类泛型定义

public class Datas <X>{
   private X x;
   public Datas(X x){
       this.x = x;
  }
   public X getX(){
       return x;
  }
   public void setX(X x){
       this.x = x;
  }

   public static void main(String[] args) {
       Datas datas = new Datas(50);
       //不声明: X为Object
       Datas datas1 = new Datas("哈哈");
       Datas<Car> datas2 = new Datas<>(new Car("吉利",30));
       //声明 X为 Car类型
       Datas<Integer> datas3 = new Datas<>(50);
  }
}

 

 

 

 

标签:arr,Java,String,symbol,参数,str,泛型,public,Datas
From: https://www.cnblogs.com/njhwy/p/18399532

相关文章

  • C++ | 泛型编程:模板初阶与函数模板深度解析
    文章目录C++泛型编程:模板初阶与函数模板深度解析1.泛型编程:实现代码的通用性2.函数模板:代码的模具2.1什么是函数模板?2.2函数模板的格式2.3函数模板的原理2.4函数模板的实例化2.5模板参数的匹配原则3.类模板:更进一步的通用性3.1类模板的定义3.2类模板的实例化......
  • Postman请求参数:Query、Path、Body 详解
    Postman作为一个功能强大的工具,极大地简化了API测试和调试的过程,提供了发送请求和检查响应的直接方法。本文将着重介绍如何在Postman中高效地处理请求参数,以提高API测试和开发的便利性。1、解析请求参数首先,我们需要明白什么是请求参数。简单来说,请求参数是传递......
  • Java开发初学:认识Java的基本知识
    Java的基础知识等进行介绍Java的发展史与Java体系Java是sun(StanfordUniversityNetwork)公司,1982年成立,java的主要设计者是JamesGosling,来源一个为电子消费产品项目Green。95年,Sun发布JDK1.t098年,JDK1.2,更名为Java2后续JDK1.3、1.4JDK1.5,更名为Java5.0我们使用jdk1......
  • Java毕业设计基于SpringBoot的超市在线销售系统(源码+文档+调试+讲解)
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍该超市在线销售系统采用B/S架构、并采用java语言以及springboot框架进行开发。该系统主要设计并完成了管理过程中的用户注册登录、个人信息修改、用户、普通管理员、商品信息、留言......
  • 基于java语言的点击方块小游戏
    游戏玩法目标:玩家需要在限时内点击尽可能多的方块。规则:游戏启动后,屏幕上会随机出现一个移动的方块;玩家点击方块得分,方块会重新随机出现在另一个位置;游戏限时为30秒,时间结束时显示总分。代码importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;import......
  • Java使用gdal更改shp要素的字段属性值
    文章目录前言一、GDAL和Java版本二、代码1.引入gdal,设置gdal环境2.修改要素属性值3.测试使用总结前言昨天实现了gdal对shp文件进行属性字段的重命名,Java使用gdal重命名shp属性字段。对于gdb的话也是类似的思路,只不过gdb有多个图层,以后有涉及到再写。今天试了下gda......
  • Java毕业设计基于SpringBoot的毕业设计管理系统(源码+文档+调试+讲解)
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍本论文主要完成不同用户的权限划分,不同用户具有不同权限的操作功能,在学生模块,主要有学生进行注册和登录,学生可以查看开题报告、中期检查、论文提交、论文指导、毕业答辩等,还能......
  • java LDAP 学习
    javaLDAP学习基础概念目录系统是关于某些类别的对象(例如人)的信息列表。目录可以用于查找特定对象的信息,也可以反方向查找满足特定需求的对象。企业中的员工通讯录就是一个目录系统。目录访问协议(directoryaccessprotocol)就是用来访问目录中数据的标准化方式。最广泛使用的......
  • 基于Java的考试报名管理系统的设计与实现(源码+LW+调试文档)
     目录:程序功能截图:程序部分代码参考:数据库sql:程序技术介绍:后端springboot介绍:mysql介绍:程序论文:​选择我的理由:程序获取:......
  • Java毕业设计基于SpringBoot的城市公交运营管理系统(源码+文档+调试+讲解)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言本论文主要完成不同用户的权限划分,不同用户具有不同权限的操作功能,在公交员模块,主要有公交员进行注册和登录,公交员可以查看公交调度、紧急上报、紧急调度、车辆状况等,还能修改......