java泛型
来源:互联网 发布:电信软件有哪些 编辑:程序博客网 时间:2024/06/01 09:02
1.java泛型类型
定义方式为:
class A<T>,其中T不能为基本类型,如可以为String,Integer等类型,但是不能为int,char,double等基本类型,下面使用java.uitl.ArrayList实现一个泛型栈。
栈的工作方式为后进先出,对栈的基本操作为入栈,出栈,下面实现一个简单泛型栈类。
其中T可以用任意其他类型代替,也可以由用户自定义的的类代替。
Stack泛型类如下:
import java.util.ArrayList;public class Stack<T>{ private ArrayList<T> list = new ArrayList<T>(); public void push(T a){ list.add(a); } public T pop(){ int lastIndex = list.size(); T returnVal = list.get(lastIndex - 1); list.remove(lastIndex - 1); return returnVal; } public static void main(String[] args){ Stack<String> str = new Stack<String>(); str.push("landong"); str.push("beijing"); System.out.println(str.pop()); } }编译并运行上述代码可得到如下输出:
javac -d . Stack.java && java Stack beijing
2.java泛型方法
利用泛型,定义一个泛型方法,用于打印对象信息,且看如下代码:
public class Gen<T>{ public static void main(String[] args){ Person p = new Person("Ana", "male", 12); Tree t = new Tree(4.3, "Pine", 5); Gen.<Person>print(p); Gen.<Tree>print(t); } public static <E> void print(E obj){ System.out.println(obj.toString()); } }class Person{ String name; String sex; int age; public Person(){ } public Person(String n, String s, int a){ name = n; sex = s; age = a; } public String toString(){ return "A person with name: " + name + " age: " + age + " sex: " + sex; } }class Tree{ double height; String type; int age; public Tree(){ } public Tree(double h, String t, int a){ height = h; type = t; age = a; } public String toString(){ return "A tree with heigth: " + height + " type: " + type + " age: " + age; }}
编译运行上述代码,输出结果如下:
javac -d . Gen.java && java Gen A person with name: Ana age: 12 sex: maleA tree with heigth: 4.3 type: Pine age: 5
3.java泛型使用限制
(1)不能是用泛型类型参数创建实例,即不能使用new T();
(2)不能使用泛型类型参数创建数组,即不能使用 E[] arr = new E[]
(3)不能使用泛型类型创建数组,对下面这个语句
ArrayList<String>[] list = new ArrayList<String>[10]是不允许的,但是可以通过下面这种方法来规避这个限制
ArrayList<String> list = (ArrayList<String>[]) new ArrayList[10](4)在静态环境下不允许类的参数时泛型类型
如下面的代码是非法的
public class Test<E> public static void m(E o1){ } //Illegal public static E o1; //Illegal static{ E o2 //Illegal }
- 【java 2】java泛型
- Java 泛型 Java generic
- Java Tutorials_Generics(java泛型)
- Java基础 Java 泛型
- java 泛型
- java泛型
- Java泛型
- Java泛型
- java泛型
- java泛型
- java泛型
- Java 泛型
- Java泛型
- Java 泛型
- JAVA 泛型
- java 泛型
- java泛型
- Java泛型
- 设计模式(一)——重新认识面向对象
- OGNL表达式struts2标签“%,#,$”
- [转]Redis消息通知系统的实现
- onload事件-----addLoadEvent函数
- C++内存分配秘籍—new,malloc,GlobalAlloc
- java泛型
- Hdu-1016 Prime Ring Problem【DFS】
- Linux内存管理图解
- jsp 字符集编码UTF-8
- 很实用的javascript date(时间)时针和倒计时网页程序
- 不要做一只四处逃命的羊,我们可以改变着一切
- [转自]同步/异步与阻塞/非阻塞的区别
- Hibernate Search试用总结
- 因子和
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
漯河专业技术人才网
漯河教育网首页
用盐水漱口有什么好处
双氧水能漱口吗
陶瓷漱口杯
漱口杯什么材质好
漱口杯图片
漱口杯设计
旅行洗漱杯
什么牌子的漱口杯好
牙刷架套装带漱口杯
李施德林漱口水危害
孕妇漱口水
漱口水品牌
口腔溃疡漱口水
拔牙后漱口水
医用 漱口水
ouo漱口水
西瓜霜漱口水
狮王漱口水
漱口水起什么作用
漱口水一般多少钱
贝基漱口水多少钱一瓶
漱口水图片
漱口水价钱
漱口水多少钱
漱口水的价格
李施德林漱口水的危害
用漱口水还用刷牙吗
高露洁漱口水
什么牌子的漱口水比较好
漱口水有什么作用
漱口水大概多少钱
漱口水什么牌子的好
漱口水使用方法
哪个牌子的漱口水好用
漱口水怎么使用
怎样使用漱口水
代理漱口水
口宝漱口水
儿童可以用漱口水吗