一、泛型类

定义格式:

修饰符 class 类名<类型>{}

例如:

public class Generic <T>{}

其中,T可以随便写为任意标识,常见的如:T,E,K,等形式的参数常用于表示泛型

E - Element (在集合中使用,因为集合中存放的是元素)

T - Type(Java 类)

K - Key(键)

V - Value(值)

N - Number(数值类型)

泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开

一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。因为他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型。

如下实例演示了我们如何定义一个泛型类:

public class Box<T> {private T t;public void add(T t) {this.t = t;}public T get() {return t;}
public static void main(String[] args) {Box<Integer> integerBox = new Box<Integer>();Box<String> stringBox = new Box<String>();integerBox.add(new Integer(10));stringBox.add(new String("菜鸟教程"));System.out.printf("整型值为 :%d\n\n", integerBox.get());System.out.printf("字符串为 :%s\n", stringBox.get());}
}

二、泛型方法

你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。

定义格式:修饰符 类型 返回值类型 方法名(类型 变量名){}

注意:类型参数只能代表引用型类型,不能是原始类型(像 int、double、char 等)。

例如:

public <T> void show(T t){}

下面的例子演示了如何使用泛型方法打印不同类型的数组元素:


public class GenericMethodTest
{// 泛型方法 printArray                         public static < E > void printArray( E[] inputArray ){// 输出数组元素            for ( E element : inputArray ){        System.out.printf( "%s ", element );}System.out.println();}public static void main( String args[] ){// 创建不同类型数组: Integer, Double 和 CharacterInteger[] intArray = { 1, 2, 3, 4, 5 };Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };System.out.println( "整型数组元素为:" );printArray( intArray  ); // 传递一个整型数组System.out.println( "\n双精度型数组元素为:" );printArray( doubleArray ); // 传递一个双精度型数组System.out.println( "\n字符型数组元素为:" );printArray( charArray ); // 传递一个字符型数组}
}

运行结果如下所示:

整数数组元素为:

1 2 3 4 5

双精度型数组元素为:

1.1 2.2 3.3 4.4

字符型数组元素为:

H E L L O

三、泛型接口

定义格式:修饰符 interface 接口名 <类型>{}

例如:

public interface Generic<T>{}

泛型接口实现类定义如下:

public class GenericImpl<T> implements Generic<T>{@Overridepublic void show(T t) {System.out.println(t);}
}

测试结果如下:

public class Test {public static void main(String[] args) {Generic<String> g1=new GenericImpl<String>();g1.show("林青霞");Generic<Integer> g2=new GenericImpl<Integer>();g2.show(30);}
}

输出为:

林青霞

30

Java 泛型类、泛型方法和泛型接口相关推荐

  1. Java系列之:泛型类、泛型方法、泛型接口

    Java系列之:泛型类.泛型方法.泛型接口 一.泛型 二.泛型类 三.泛型方法 四.泛型接口 五.类型通配符 一.泛型 泛型:本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.将类型由原来的 ...

  2. java泛型程序设计——定义简单泛型类+泛型方法

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 定义泛型类+泛型方法的知识: [1]一个泛型类: 就是具有一个或多个 ...

  3. 【Flutter】Dart 泛型 ( 泛型类 | 泛型方法 | 特定类型约束的泛型 )

    文章目录 一.Dart 泛型类与泛型方法 二.Dart 泛型中的特定类型约束 三.Dart 自带泛型 四.完整代码示例 五. 相关资源 一.Dart 泛型类与泛型方法 泛型作用 : 为 类 , 接口 ...

  4. java泛型类指定多个泛型_Java泛型中的多态

    java泛型类指定多个泛型 从作为Java程序员的早期开始,我们都知道如何实例化和使用Collection对象. 实例化为具体类的List接口将如下所示. List myArrayList = new ...

  5. C++模板类与Java泛型类

    C++模板类与Java泛型类 一.C++模板类使用示例 1.模板类定义头文件base.h template<class T> class Base { public: Base() {}; ...

  6. java 泛型接口 范型类 范型方法_泛型类、泛型方法、泛型接口

    我们知道Object类可以接收任何类型的类,如果描述一个坐标可以用数字描述,也可以用字符串描述(东经 北纬-),Object根据不同的需求接收不同的类可以完成一些操作: class Position ...

  7. java 接口的泛型方法_Java泛型/泛型方法/通配符/泛型接口/泛型泛型擦出

    从JDK1.5以后引入了三大常用新特性:泛型.枚举(enum).注解(Annotation).其中JDK1.5中泛型是一件非常重要的实现技术,它可以帮助我们解决程序的参数转换问题.本文为大家详细介绍一 ...

  8. 【Java 泛型】泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )

    文章目录 一.泛型简介 二.泛型类 三.泛型方法 四.静态方法的泛型 五.泛型类与泛型方法完整示例 一.泛型简介 泛型 可以 简单理解为 参数化类型 , 主要作用在 类 , 方法 , 接口 上 ; j ...

  9. java:泛型(自定义泛型类、自定义泛型接口、泛型的继承和通配符说明)

    目录 一.泛型的介绍 二.泛型的语法 2.1 泛型的声明 2.2 泛型的实例化 2.3 泛型使用举例 2.3 泛型使用的注意事项和细节 2.4 泛型课堂练习题 2.5 自定义泛型类 2.6 自定义泛型 ...

最新文章

  1. 5 判断数据是否存在_Trie树实现:100亿URL中判断某个URL是否存在
  2. 单片机模块学习之数码管
  3. 怎么搞技术呢?我觉得最简单的方法
  4. gre可以用计算机,GRE数学能用计算器吗
  5. 电气simulink常用模块_ADAS/AD控制器模块开发:产品构成要素及产品需求
  6. ASP.NET Core中的响应压缩
  7. 鼠标点击层以外的地方层隐藏
  8. python运行不出结果_python程序没有报错但是运行没有任何结果怎么办?
  9. Dubbo使用_尚硅谷视频学习笔记
  10. IDEA 导入p3c-formatter 格式化代码
  11. umount报错设备繁忙(device is busy)怎么处理?
  12. springboot志愿者管理系统
  13. android实现购物车效果,Android实现加入购物车动画
  14. C# Socket实现两台电脑通信(三)
  15. HTML 随机点名 --个人写法
  16. 怎么用python海龟画五角星_海龟编辑器五角星怎么画 绘制五角星就是这么简单...
  17. turn out用法
  18. 数据降维的几种方法(转)
  19. 用Python批量获取唯品会商品数据(附视频教程)
  20. 真正意义上下一代 Windows Embedded:有关 Windows 10 Athens 的事

热门文章

  1. 安卓系列之 kotlin 项目实战--基础 demo
  2. oppo reno7参数配置
  3. 基于SigmaStudio DSP车载音频功放开发流程
  4. Java 正则表达式对数据脱敏处理
  5. Java数组去重问题
  6. 用c语言编写的打字母游戏,用C语言编写小游戏——“井字棋”
  7. amqp协议java_amqp协议链接陷阱-An unexpected connection driver error occured
  8. 自动计数报警器c语言程序,计数报警器电路设计方案汇总(多款模拟电路设计原理图详解)...
  9. 论文笔记|固定效应的解释和使用
  10. 磁通和磁通链,电感关系