登录
首页 > JAVA > [Java] Java 泛型

[Java] Java 泛型

发布时间:2023-08-08 10:24:39 发布用户: admin

[Java] Java 泛型
泛型方法
Java 泛型

如果我们只写一个排序方法,就能够对整型数组、字符串数组甚至支持排序的任何类型的数组进行排序,这该多好啊。
Java泛型方法和泛型类支持程序员使用一个方法指定一组相关方法,或者使用一个类指定一组相关的类型。
Java泛型(generics)是JDK 5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
使用Java泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行排序。该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。

下面是定义泛型方法的规则:

所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的)。
每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
泛型方法方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)。
全局泛型
/**
 * 数组打印
 *
 * @param inputArray
 * @param <E>
 */
public <E> void printArray(E[] inputArray) {
    // 输出数组元素
    Arrays.asList(inputArray).forEach(p -> System.out.printf("%s ", p));
}

/**
 * 核心测试方法
 */
@Test
public void testCommonTypeFunctionDefine() {
    printArray(new String[]{"a", "b", "c"});
    //a b c
    System.out.println();
    printArray(new Integer[]{1, 2, 3, 4});
    //1 2 3 4
}

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
有界的类型参数
可能有时候,你会想限制那些被允许传递到一个类型参数的类型种类范围。例如,一个操作数字的方法可能只希望接受Number或者Number子类的实例。这就是有界类型参数的目的。要声明一个有界的类型参数,首先列出类型参数的名称,后跟extends关键字,最后紧跟它的上界。

/**
  * 有界泛型 比较三个值并返回最大值
  * @param x
  * @param y
  * @param z
  * @param <T>
  * @return
  */
 public <T extends Comparable<T>> T maximum(T x, T y, T z)
 {
     T max = x; // 假设x是初始最大值
     if ( y.compareTo( max ) > 0 ){
         max = y; //y 更大
     }
     if ( z.compareTo( max ) > 0 ){
         max = z; // 现在 z 更大
     }
     return max; // 返回最大对象
 }

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
泛型类
泛型类

登录后复制 
package com.example.chapter3.function;

import lombok.Data;

/**
 * <p>
 *  泛型类
 * </p>
 *
 * @author xiachaoyang
 * @version V1.0
 * @date 2018年09月30日 11:17
 * @modificationHistory=========================逻辑或功能性重大变更记录
 * @modify By: {修改人} 2018年09月30日
 * @modify reason: {方法名}:{原因}
 * ...
 */
@Data
public class Box<T> {
    private T t;
}

-----------------------------------
©著作权归作者所有:来自51CTO博客作者Yiyuery的原创作品,请联系作者获取转载授权,否则将追究法律责任
[Java] Java 泛型
https://blog.51cto.com/u_15263565/2884730

PHP更多>>

海关总署:我国进出口 连续2个月同比增长 长清区成功举办首届职工家政技能大赛 前妻要回土地于法有据 法院公允分割定分止争 G312线傅苦公路5标项目全幅顺利贯通 实现“56到84+”延伸,这个镇的文化中心为更多人群提供公共文化服务! 前11个月进出口持平 11月份同比增长1.2% 中国与新加坡签署中新自由贸易协定进一步升级议定书 凤阳奋力绘就宜居宜业和美乡村新画卷 浙江持续擦亮“一路先行”党建品牌 山东兖州:“一线支部工作法”将党旗插在田间地头 固安县加快推进 空天信息产业发展 王晓涛被开除党籍 濮阳王瑞林获评中国青年志愿者优秀个人 报中共中央批准,两“虎”同时受处分! 国务院:支持上海自贸试验区可信、安全和负责任地使用人工智能技术 把“东方美”传向国际市场!聊城这家小镇企业东盟市占率超70% 交通运输部关于发布《综合货运枢纽设计规范》等18项交通运输行业标准的公告 喜讯 | 贵州三力荣获“2021-2023年贵州省促进新型工业化发展先进企业”称号 内蒙古这起“百万黄金被盗案”,更多细节披露! 交通运输部印发《城市轨道交通通信系统运营技术规范(试行)》 黑龙江省政协原副主席曲敏,被“双开” 中老铁路磨憨口岸出入境人员突破10万人次 甘肃兰州榆中县:设立“零工驿站”提供就业服务 扶余:抢抓战略机遇,推动县域经济高质量发展 【“双争”进行时】霸州:百姓宣讲家乡事 强国复兴攀高峰 “山西一女性公职人员实名举报两任局长”,最新通报 海关总署:11月我国外贸进出口同比增长1.2% (人权行动看中国)河南驻马店:特色种植产业成农民增收好渠道 总投资74亿元!中国铁建中标海南临高金牌港开发区港口及配套工程项目 鼓励大学生基层就业还需多方向着力
Copyright 2018-2023 黑鸟云 版权所有  京ICP备2022032575号-3