信游代理-信游代理

信游代理-信游代理【主管╇QV:555333】信游代理【╇QV:555333】《优_质_平_台《《_《《置_顶_待_遇《《一步到位》》Java泛型进行了全面的总结。文章内容包括普通泛型、通配符、受限泛型、泛型接口、泛型方法、返回泛型类型实例等等。

AD: WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统

虽然Scala创始人Martin Odersky说当年正是因为Java泛型的丑陋,所以才想到要创建一个新的语言,不过这仍然不妨碍我们学习Java泛型。毕竟即使听说Java泛型不好用,但好不好用还是得会用了才知道。下面是一些有关Java泛型的总结:信游代理-信游代理【主管╇QV:555333】信游代理【╇QV:555333】《优_质_平_台《《_《《置_顶_待_遇《《一步到位》》

普通泛型

class Point< T>{ // 此处可以随便写标识符号,T是type的简称

private T var ; // var的类型由T指定,即:由外部指定

public T getVar(){ // 返回值的类型由外部决定

return var ;

}

public void setVar(T var){ // 设置的类型也由外部决定

this.var = var ;

}

};

public class GenericsDemo06{

public static void main(String args[]){

Point< String> p = new Point< String>() ; // 里面的var类型为String类型

p.setVar("it") ; // 设置字符串

System.out.println(p.getVar().length()) ; // 取得字符串的长度

}

};

----------------------------------------------------------

class Notepad< K,V>{ // 此处指定了两个泛型类型

private K key ; // 此变量的类型由外部决定

private V value ; // 此变量的类型由外部决定

public K getKey(){

return this.key ;

}

public V getValue(){

return this.value ;

}

public void setKey(K key){

this.key = key ;

}

public void setValue(V value){

this.value = value ;

}

};

public class GenericsDemo09{

public static void main(String args[]){

Notepad< String,Integer> t = null ; // 定义两个泛型类型的对象

t = new Notepad< String,Integer>() ; // 里面的key为String,value为Integer

t.setKey("汤姆") ; // 设置第一个内容

t.setValue(20) ; // 设置第二个内容

System.out.print("姓名;" + t.getKey()) ; // 取得信息

System.out.print(",年龄;" + t.getValue()) ; // 取得信息

}

};

通配符

class Info< T>{

private T var ; // 定义泛型变量

public void setVar(T var){

this.var = var ;

}

public T getVar(){

return this.var ;

}

public String toString(){ // 直接打印

return this.var.toString() ;

}

};

public class GenericsDemo14{

public static void main(String args[]){

Info< String> i = new Info< String>() ; // 使用String为泛型类型

i.setVar("it") ; // 设置内容

fun(i) ;

}

public static void fun(Info< ?> temp){ // 可以接收任意的泛型对象

System.out.println("内容:" + temp) ;

}

};

受限泛型

class Info< T>{

private T var ; // 定义泛型变量

public void setVar(T var){

this.var = var ;

}

public T getVar(){

return this.var ;

}

public String toString(){ // 直接打印

return this.var.toString() ;

}

};

public class GenericsDemo17{

public static void main(String args[]){

Info< Integer> i1 = new Info< Integer>() ; // 声明Integer的泛型对象

Info< Float> i2 = new Info< Float>() ; // 声明Float的泛型对象

i1.setVar(30) ; // 设置整数,自动装箱

i2.setVar(30.1f) ; // 设置小数,自动装箱

fun(i1) ;

fun(i2) ;

}

public static void fun(Info< ? extends Number> temp){ // 只能接收Number及其Number的子类

System.out.print(temp + "、") ;

}

};

----------------------------------------------------------

class Info< T>{

private T var ; // 定义泛型变量

public void setVar(T var){

this.var = var ;

}

public T getVar(){

return this.var ;

}

public String toString(){ // 直接打印

return this.var.toString() ;

}

};

public class GenericsDemo21{

public static void main(String args[]){

Info< String> i1 = new Info< String>() ; // 声明String的泛型对象

Info< Object> i2 = new Info< Object>() ; // 声明Object的泛型对象

i1.setVar("hello") ;

i2.setVar(new Object()) ;

fun(i1) ;

fun(i2) ;

}

public static void fun(Info< ? super String> temp){ // 只能接收String或Object类型的泛型

System.out.print(temp + "、") ;

}

};

Java泛型无法向上转型

class Info< T>{

private T var ; // 定义泛型变量

public void setVar(T var){

this.var = var ;

}

public T getVar(){

return this.var ;

}

public String toString(){ // 直接打印信游代理-信游代理【主管╇QV:555333】信游代理【╇QV:555333】《优_质_平_台《《_《《置_顶_待_遇《《一步到位》》

return this.var.toString() ;

}

};

猜你喜欢

转载自www.cnblogs.com/zhangweiqing/p/12825036.html