java自学--泛型

泛型的结构

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

{

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

}

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


eg:

public class F <T1,T2>

{

private T1 t1;

private T2 t2;

}


F<String>  f = new F<String>();



适配符:?

     接受泛型变量的时候如果不知道泛型的具体类型,那么如果想要接收对象那么可以使用适配符(?)使用方法是

public void fun( F<?>   f)

{}


如果使用? 意味着可以接受任意的内容,但是此内容无法直接使用<?> 修饰的泛型变量进行修改(声明变量时候不能直接使用?)


使用? 设置上下限


设置上限

声明中:

public void fun(F<? extends Number> f)

{}

表示传入的?不能超过Number 如不能使用String这个类

定义中:

public class F <T1 extends Number>

{

private T1 t1;

}


F<String>  f = new F<String>(); 这是错的超过上限了

F<Integer> f = new F<Integer>();

 

设置下限

public void fun(F<? super String> f)

{}

只能使用本类及其父类 例子中只能使用String 和Object 类型



泛型的方法:

    class  Test

 {

public  <T>T  fun(T t)

{

return t;

}

}



通过泛型的方法返回泛型类的实例

eg

class Info<T extends Number>{ // 指定上限,只能是数字类型
private T var ; // 此类型由外部决定
public T getVar(){
return this.var ;
}
public void setVar(T var){
this.var = var ;
}
public String toString(){ // 覆写Object类中的toString()方法
return this.var.toString() ;
}
};
public class GenericsDemo27{
public static void main(String args[]){
Info<Integer> i = fun(30) ;
System.out.println(i.getVar()) ;
}
public static <T extends Number> Info<T> fun(T param){
Info<T> temp = new Info<T>() ; // 根据传入的数据类型实例化Info
temp.setVar(param) ; // 将传递的内容设置到Info对象的var属性之中
return temp ; // 返回实例化对象
}
};



使用泛型统一传入参数类型


class Info<T>{
private T var ; // 此类型由外部决定
public T getVar(){
return this.var ;
}
public void setVar(T var){
this.var = var ;
}
public String toString(){ // 覆写Object类中的toString()方法
return this.var.toString() ;
}
};
public class GenericsDemo28{
public static void main(String args[]){
Info<String> i1 = new Info<String>() ;
Info<String> i2 = new Info<String>() ;
i1.setVar("HELLO") ; // 设置内容
i2.setVar("李兴华") ; // 设置内容
add(i1,i2) ;
}
public static <T> void add(Info<T> i1,Info<T> i2){
System.out.println(i1.getVar() + " " + i2.getVar()) ;
}
};



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值