Java泛型

Java泛型是JDK1.5中添加的支持的,所以在JDK1.5之前的版本是没有些功能。泛型就是在对象建立时不指明类中属性的具体类型,而是由外部在声明及实例化对象时指定类型。泛型可以解决数据类型安全性问题。


[b]一、泛型基本应用[/b]

泛弄定义:


【访问权限】 class 类名称<泛型类型标识1,泛型类型标识2..>{

【访问权限】 泛型类型标识符 变量名称;

【访问权限】 泛型类型标识符 方法名称(){ };

【访问权限】返回值类型声明 方法名称(泛型类型标识符 变量名称){ };

}

类名称<具体类> 对象名称 = new 类型名称<具体类>();



class Point<T>{

private T name ;

public T getName(){

return this.name;
}
public void setName(T name){

this.name = name;
}

}
public class Test1{

public static void main(String args[]){
Point<Integer> p = new Point<Integer>();
p.setName(24);
System.out.println(p.getName()); //输出 24
}

}

public class Test2{

public static void main(String args[]){
Point<String> p = new Point<String>();
p.setName("ITeye");
System.out.println(p.getName()); //输出"ITeye"
}
}


[quote]泛型类中具体类,不能指定其基本数据类型,必须设置成类,加入泛型避免了类转化异常(ClassCastException)的发生,这样使程序的操作更加安全。[/quote]


[b]构造方法应用泛型[/b]


【访问权限】 构造方法(<泛型类型标识符> 变量名称){ } ;


[b]指定多个泛型类型[/b]



class Point<K,v>{

private K key ;

private V value ;

public K getKey(){

return this.key ;
}
public void SetKey(K key){

this.key = key ;
}
public V getValue(){

return this.value ;
}
public void setValue(V value){

this.value = value ;
}

};
public class Test{

public static void main(String args){

Point<String,Integer> p = new Point<String,Integer>();
p.setKey("ITeye") ;
p.setValue(40) ;
System.out.println(p.getKey()+"--"+p.getValue());
}
}


[quote]
在实例化对象时,如不指定类型,这样使用此类时,就会在编译时出现不安全的警告信息,但是并不会影响程序的运行。如没有指定类型,则统一使用Object进行接收。
[/quote]


[b]二、通配符[/b]

在开发中对象引用传递是最常见,多态表现在最明显;但是在泛型类的操作中,在进行引用传递时泛型类型必须匹配才可以传递,否则无法传递。例如下面例子,编译出错。尽管String是Object类的子类,但是引用传递同样无法进行传递。虽然你可以直接将Info<Object>修改为Info,程序可以正常使用,但这样做不妥当,所以你可以引用通配符“?”


public class Test{
public static void main(String args[]){
Info<String> info = new Info<String>() ;
info.setTitle("ITeye");
getInfo();
}
public static void getInfo(Info<Object> temp){
System.out.println("标题:" + temp);
}
}


修改为:

public class Test{
public static void main(String args[]){
Info<String> info = new Info<String>() ;
info.setTitle("ITeye");
getInfo();
}
//Info<?>可以表示任意的泛型对象
public static void getInfo(Info<?> temp){
System.out.println("标题:" + temp);
}
}


注意:使用通配符不能用于接收泛型对象,如:


Info<?> info = new Info<String>(); //错误




[b]三、泛型受限[/b]


待续...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值