泛型详解_1
来源:互联网 发布:核心期刊遴选数据库 编辑:程序博客网 时间:2024/06/05 09:21
java代码
普通泛型:随便命名泛型的类型。
package DAY0114;class Point<T>{ //此处可以随便命名类的名字,与类型。T是type的简称。private T var; //var是变量,var的类型由T指定。即,由外部指定。public T getVar() { //返回值的类型由外部指定。return var;}public void setVar(T var) {//设置的类型也由外部指定this.var = var;}}public class GenericsDemo01 {public static void main(String args[]){Point<String> point = new Point<String>(); //里面的var变量的类型为String类型point.setVar("it"); //设置字符串System.out.println(point.getVar()); //取出字符串}}
普通泛型:泛型类型为俩个参数的例子
package DAY0114;class Notepad<K,V> { //此处指定了俩个泛型类型private K key; //此变量的类型由外部决定private V value; //此变量的类型由外部决定public K getKey() {return key;}public void setKey(K key) {this.key = key;}public V getValue() {return value;}public void setValue(V value) {this.value = value;}}public class GenericsDemo02 {public static void main(String args[]){Notepad<String,Integer> t = null; //定义俩个泛型类型的对象t = new Notepad<String,Integer>(); //里面的key的类型为string,value的类型为integert.setKey("xiaowng"); //设置内容t.setValue(20); //设置内容System.out.println("name:" + t.getKey()); //取得信息System.out.println("age:" + t.getValue()); //取得信息}}
通配符
package DAY0114;class Info<T>{private T var ; //定义泛型类型public T getVar() {return var;}public void setVar(T var) {this.var = var;}public String toString(){ //直接打印return this.var.toString();}}public class GenericsDemo03 { public static void main(String args[]){ Info<String> info = new Info<String>(); //使用String为泛型类型 info.setVar("it"); //设置内容 fun(info); } public static void fun(Info<?> temp){ // 可以接受任意的泛型对象 System.out.println("neirong = " + temp); }}
受限泛型package DAY0114;class Info04<T>{private T var; //定义泛型变量public T getVar() {return var;}public void setVar(T var) {this.var = var;}public String toString(){ //直接打印return this.var.toString();}}public class GenericsDemo04 {public static void main(String args[]){Info04<Integer> info01 = new Info04<Integer>(); //声明Integer的泛型对象Info04<Float> info02 = new Info04<Float>(); //声明Float的泛型对象info01.setVar(30); //设置整数,自动装箱info02.setVar(30.1f); //设置小数,自动装箱fun(info01);fun(info02);}public static void fun(Info04<? extends Number> temp){ //只能接受Number以及Number的子类System.out.println(temp + "~");}}
package DAY0114;class Info5<T>{private T var ; //定义泛型变量public T getVar() {return var;}public void setVar(T var) {this.var = var;}public String toString(){ //直接打印return this.var.toString();}}public class GenericsDemo05 {public static void main(String args[]){Info5<String> info01 = new Info5<String>(); //声明String的泛型对象Info5<Object> info02 = new Info5<Object>(); //声明Object的泛型对象info01.setVar("hello");info02.setVar(new Object());fun(info01);fun(info02);}public static void fun(Info5<? super String> temp){ //只能接受String或Object类型的泛型System.out.println(temp + "~"); }}
泛型无法向上转型package DAY0114;class Info06<T>{private T var; //定义泛型变量public T getVar() {return var;}public void setVar(T var) {this.var = var;}public String toString(){ //直接打印return this.var.toString();}}public class GenericsDemo06 {public static void main(String args[]){Info06<String> info01 = new Info06<String>(); //泛型类型为StringInfo06<Object> info02 = null;info02 = info01; //这句会出错,incompatible types 泛型无法向上转型}}
泛型接口
package DAY0114;interface Info07<T>{ //在接口上定义泛型public T getVar(); //定义抽象方法,抽象方法的返回值就是泛型类型}class Info07Impl<T> implements Info07<T>{ //定义泛型接口的子类private T var; //定义属性public T getVar() { //通过构造方法设置属性内容return this.var;}public void setVar(T var) {this.var = var;}public Info07Impl(T var){//shengchengzhethis.setVar(var);}}public class GenericsDemo07 {public static void main(String args[]){Info07<String> i = null; //声明接口对象i = new Info07Impl<String>("tangmu"); //通过子类实例化对象 System.out.println(i.getVar());}}
package DAY0114;interface Info08<T>{ //在接口上定义泛型public T getVar(); //定义抽象方法,抽象方法的返回值就是泛型类型}class Info08Impl implements Info08<String>{ //定义泛型接口的子类@Override public String getVar() {return this.var;}private String var; //定义属性public String setVar(String var){return this.var = var;}public Info08Impl(String var){ //通过构造方法设置属性内容this.setVar(var);}}public class GenericsDemo08 {public static void main(String args[]){Info08 i = null; //声明接口对象i = new Info08Impl("tangmu"); //通过子类实例化对象System.out.println(i.getVar());}}
泛型方法package DAY0114;class Demo09{public <T> T fun09(T t){ //可以接受任意类型的数据return t; //直接把参数返回}}public class GenericsDemo09 {public static void main(String args[]){Demo09 demo09 = new Demo09(); //实例化Demo09队形String str = demo09.fun09("tangmu"); //传递字符串Integer i = demo09.fun09(30); //传递数字System.out.println("str = " + str + ", i= " + i); //输出内容}}
泛型数组
package DAY0114;public class GenericsDemo10 {public static <T> T[] fun1(T...arg){ //接受可变参数return arg; //返回泛型类型}public static <T> void fun2(T param[]){ //输出System.out.println("jieshou fanxing shuzu");for(T t:param){System.out.println(t + "~");}}public static void main(String args[]){Integer[] i = fun1(1,2,3,4,5,6); //返回泛型数组fun2(i);}}
文章转至:
http://www.cnblogs.com/sunwei2012/archive/2010/10/08/1845938.html
0 0
- 泛型详解_1
- Android AIDL详解_1
- hibernate inverse cascade详解_1
- php一些函数详解_1
- Boolan C++ STL与泛型编程_1
- 0_1 背包动态规划详解
- Java_详解_1、==和Equal
- http://www.cr173.com/html/11519_1.html CreateProcess详解
- Android测试详解_1-Best Practices for Testing-介绍
- gulp源码解析(一)—— Stream详解_1
- Java开发中的23种设计模式详解_1
- Demo_boolean型_8位_1字节
- Visual Paradigm UML 11_1 企业中文下载地址、安装及激活详解教程
- C/C++子函数参数传递,堆栈帧、堆栈参数详解_1
- 设计模式之禅—23种设计模式详解_1 单例模式
- java _1
- js_trim()_1
- c++_1
- winCE6.0摄像头驱动buffer分析
- 高效sem投放 助力更多中小企业腾飞
- 排序(一)
- 字符串匹配算法之KMP算法和BM算法
- 用Wix制作VSPackage的安装包
- 泛型详解_1
- setTimeout,setInterval的使用及区别
- js 常用正则表达式表单验证代码
- 高效利用起网站链接为优质页面打好基础才是首先要做的事情
- 记录一下,学习 nRF51822 完毕
- 高用户体验,减少跳出率
- 382329 - Delta extractors CO: Poor performance
- 高枕无忧的外链资源
- 高质量的博客该如何来进行打造?