java中泛型的使用
来源:互联网 发布:开源财务系统 php 编辑:程序博客网 时间:2024/06/01 09:24
泛型的使用对于代码质量的提高有很多作用。泛型可以增加程序的可读性,可以使代码得到一定程度的复用。不使用泛型时,如果是装入集合操作,那么元素都被当做Object对待,失去自己的类型,那么从集合中取出来时, 往往需要转型,效率低,容易产生错误。
下面看一段比较全面的泛型代码:
package com.ds.test.all;import java.util.ArrayList;public class FanXin <E>{ public E pro1; public <T> E getName(T a){ if(a instanceof Integer){ System.out.println("a is Integer"); }else if (a instanceof String) { System.out.println("a is String"); } return pro1; } public void getAge(ArrayList<? extends Number> al){ for(int i = 0;i<al.size();i++){ System.out.println(al.get(i).getClass()); } } public static void main(String arg[]){ FanXin<String> s = new FanXin<String>(); FanXin<Integer> s2 = new FanXin<Integer>(); s.getName(1); s.getName("1");//泛型类型可以接受不同的参数类型 ArrayList<Number> al1 = new ArrayList<Number>(); al1.add(1L); al1.add(1); s.getAge(al1);//只需要满足是Number或者其子类 System.out.println(s.getClass() == s2.getClass());//此处可以看出java编译之后会去掉泛型 }}
这个类基本上包括了大多数常用的场景,使用方法基本上都可以从这个类上延伸开来。首先,类使用了泛型,类名上声明了这个泛型,那么该类的所有成员变量和成员方法都可以使用该泛型。本例中定义了一个使用该泛型的成员变量,还有一个扩展之后的成员方法。当在方法中需要引入新的泛型时,需要在方法返回值钱声明这个新的泛型即:<T>
,那么就可以在你的参数中增加该泛型。接下来的方法getAge(…)展示了使用通配符来使用泛型,表示al这个集合中接收的参数必须是Number或其子类。
下面看一看输出结果:
a is Integera is Stringclass java.lang.Longclass java.lang.Integertrue
第一行、第二行的记过应该很好明白。第三行、第四行也不难理解,通配符的使用情况。第五行说明了在编译过程中,对于正确检验泛型结果后,会将泛型的相关信息擦出,也就是说,成功编译过后的class文件中是不包含任何泛型信息的。泛型信息不会进入到运行时阶段。编译之后的文件如下图。
1 0
- java中泛型的使用
- Java中泛型的使用
- JAVA中泛型的使用
- java 中泛型的使用
- Java中泛型的使用
- Java中泛型的使用
- java中泛型的使用
- java中泛型的使用
- java中泛型的使用
- Java中泛型的使用
- Java中泛型的各种使用
- Java中泛型的各种使用
- Java中泛型方法的使用
- Java中泛型的使用总结
- Java中泛型的介绍与简单使用
- 【Java】Java栈的使用
- [Java] Java反射的使用
- Java Servlet的使用
- JAVA学习之this,static,String常用方法
- [编程题]序列和
- 474. Ones and Zeroes
- Android热修复之Tinker
- 购物车项目总结
- java中泛型的使用
- 简单小结一下关于JavaScript中的闭包
- adnroid.appwidget.AppWidgetProvider
- 排序总结(java版本)
- 【AngularJS】使用ng-repeat中$index的注意点
- RabbitMQ官网教程3——发布订阅
- 在(2~100)找到不大于X的最大质数
- canvas绘图详解+demo解释
- <div>/<span>/<label>标签