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 ; // 返回实例化对象
}
};
小弟就是不明白Info<Integer> i = fun(30) ;这句代码怎么感觉怎么别扭,既然是调用fun()方法,为什么可以直接声明info变量,然后将fun(30)直接赋给它。请各位大侠明示啊,谢谢啊!!!
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 ; // 返回实例化对象
}
};
小弟就是不明白Info<Integer> i = fun(30) ;这句代码怎么感觉怎么别扭,既然是调用fun()方法,为什么可以直接声明info变量,然后将fun(30)直接赋给它。请各位大侠明示啊,谢谢啊!!!
......
}
fun方法返回类型不就是Info<T>
而<T extends Number> 只在你将T作为参数中的一个类型使用前定义。你必须按此方法声明对象。