Java千百问_05面向对象(013)_泛型如何使用
1、如何使用泛型方法
了解什么是泛型看这:泛型是什么
以下是定义泛型方法的规则:
- 声明泛型方法时,在返回类型之前,需要有一个由尖括号(< >)分隔的泛型类型部分。
2 . 一个泛型类型,也称为类型参数,是一个标识符,用于指定一个泛型类型的名称。 - 类型参数可以用来声明返回类型和充当占位符传递给泛型方法。
- 泛型方法的身体与其他方法一样。
例子:
public class GenericMethodTest
{// generic method printArray public static < E > void printArray( E[] inputArray ){// Display array elements for ( E element : inputArray ){ System.out.printf( "%s ", element );}System.out.println();}public static void main( String args[] ){// Create arrays of Integer, Double and 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( "Array integerArray contains:" );printArray( intArray ); // pass an Integer arraySystem.out.println( "
Array doubleArray contains:" );printArray( doubleArray ); // pass a Double arraySystem.out.println( "
Array characterArray contains:" );printArray( charArray ); // pass a Character array}
}
这将产生以下结果:
Array integerArray contains:
1 2 3 4 5 6
Array doubleArray contains:
1.1 2.2 3.3 4.4
Array characterArray contains:
H E L L O
泛型类型还可以被限制,使用extends关键字限制泛型的父类。
例子:
public class MaximumTest
{// determines the largest of three Comparable objectspublic static <T extends Comparable<T>> T maximum(T x, T y, T z){ T max = x; // assume x is initially the largest if ( y.compareTo( max ) > 0 ){max = y; // y is the largest so far}if ( z.compareTo( max ) > 0 ){max = z; // z is the largest now }return max; // returns the largest object }public static void main( String args[] ){System.out.printf( "Max of %d, %d and %d is %d",3, 4, 5, maximum( 3, 4, 5 ) );System.out.printf( "Maxm of %.1f,%.1f and %.1f is %.1f",6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ) );System.out.printf( "Max of %s, %s and %s is %s
","pear","apple", "orange", maximum( "pear", "apple", "orange" ) );}
}
这将产生以下结果:
Maximum of 3, 4 and 5 is 5
Maximum of 6.6, 8.8 and 7.7 is 8.8
Maximum of pear, apple and orange is pear
2、如何使用泛型类/接口
泛型类/接口的声明与非泛型类类似,除了类名后增加了一个泛型类型。
与泛型方法相比,泛型类的类型参数部分可以用逗号分隔的一个或多个泛型类型。
例子:
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("Hello World"));System.out.printf("Integer Value :%d", integerBox.get());System.out.printf("String Value :%s
", stringBox.get());}
}
这将产生以下结果:
Integer Value :10
String Value :Hello World
原文地址:http://blog.csdn.net/ooppookid/article/details/51233633
Java千百问_05面向对象(013)_泛型如何使用相关推荐
- Java千百问_05面向对象(012)_泛型是什么
1.什么是泛型 泛型是Java SE 1.5的新特性,泛型即参数化类型,也就是说所操作的数据类型被指定为一个参数. 这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. ...
- Java千百问_05面向对象(004)_java接口到底是什么
1.什么是接口 接口(interface)不是一个类,它是抽象方法的集合.一个类实现一个接口,从而继承和实现接口的抽象方法. 抽象方法看这里:java中抽象概念如何体现的 接口的特点如下,先看与类类 ...
- Java千百问局部变量、类变量、实例变量有什么区别
Java千百问局部变量.类变量.实例变量有什么区别 局部变量.类变量.实例变量有什么区别 在聊局部变量.类变量.实例变量有什么区别之前,我们需要了解一下Java变量. 1.Java变量是什么 在数学世 ...
- Java千百问_03基本的语法(005)_二进制是如何做位运算的
点击进入_很多其它_Java千百问 二进制是如何做位运算的 程序中的全部数在计算机内存中都是以二进制的形式储存的.位运算说白了,就是直接对整数在内存中的二进制位进行操作. 其它运算符看这里:java种 ...
- Java千百问_07JVM架构(009)_什么是新生代的复制算法
点击进入_更多_Java千百问 1.什么是新生代的复制算法 了解堆内存看这里:java堆内存是什么样的 了解java垃圾回收看这里:java垃圾回收机制是什么 所谓复制算法(Copying),即将内存 ...
- Java千百问_01基本概念(007)_线程的状态有哪些
点击进入_更多_Java千百问 1.线程的状态有哪些 在java中java.lang.Thread类有一个变量threadStatus,标示了该线程的当前状态,它是一个int类型,但是对应的get方法 ...
- Java千百问_07JVM架构(015)_XmnXmsXmxXss有什么区别
点击进入_更多_Java千百问 1.XmnXmsXmxXss有什么区别 首先,Xmn.Xms.Xmx.Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果. ...
- Java千百问_01基本概念(012)_Socket是什么
[点击进入_更多_Java千百问][1] [1]: http://blog.csdn.net/ooppookid/article/category/6134850 ###1.什么是Socket Soc ...
- Java千百问_03基本语法(002)_java都有哪些关键字
java都有哪些关键字 首先我们来看看什么是关键字,关键字的含义. 1.java关键字是什么意思 关键字是电脑语言里事先定义的,有特别意义的特殊标识符,又叫保留字. Java的关键字对Java的编译器 ...
- Java千百问_04异常处理(007)_常见的java异常有哪些(非运行时)
1.常见的java运行时异常有哪些 了解非运行时异常看这里:什么是java中的异常 常见的运行时异常看这里:常见的运行时异常有哪些 我们所说的常见异常是jdk或者其他常用第三方jar中的异常,出现频 ...
最新文章
- URL加随机数的作用
- 可重入函数与不可重入函数(转)
- mysql所有知识点总结_MySQL知识点总结
- php 支付宝订单查询_5. PHP接入支付宝单笔订单查询接口
- sed 正则表达式【MAC地址】GLPI转换华为交换机MAC格式
- Linux记录-CPU指标介绍
- Navicat导入TXT到数据库
- Docker镜像仓库
- 杭州湾跨海大桥视频上云,夯实智慧高速“云基建
- Linq GroupJoin 使用
- 作者:钱卫宁(1976-),男,华东师范大学计算机科学与软件工程学院教授、博士生导师。...
- 74ls90设计十进制计数器电路图_利用555与74ls90制作电子秒表
- protocol buffer java_Protocol Buffer Java实例
- 5.3 Transformer意境级讲解
- ALSA之Codec注册过程
- 【编译原理实验】词法分析(Thompson)
- 工作人员做好项目协调服务器,项目团队协作做好三件事
- java导出excel表格,文件名称汉字话
- 如何用手机数据线连接电脑上网?
- DAVE4 No source available for “xx() at 0xxxxx“