@
泛型学习笔记
泛型是java中一种很重要的知识,所谓泛型就是指在对象建立时不指定类中属性的具体类型,而由外部在声明及实例化对象时指定具体的类型。
通常就是暂未确定一个类或方法属性的类型时,暂采用泛型。
泛型产生的意义:为了保证数据的安全性,防止数据转换异常。
泛型的基本使用,由外部指定其具体的操作类型。
本文章暂只列举我认为两个比较重要的案例呦,哈哈,对泛型比较感兴趣的小伙伴可以去查找更详细的资料哦!
通过泛型方法返回泛型类实例
package chapter_ten;
//定义泛型类类Info
class Info<T>{
private T var;
public Info(){}
public Info(T var){
this.var = var;
}
public void setVar(T var){
this.var = var;
}
public T getVar(){
return this.var;
}
@Override
public String toString() { //覆写toString()方法
return this.var.toString();
}
}
//泛型学习测试,通过泛型方法传入固定的类型并返回此类的泛型类实例
public class Pag332 {
public static void main(String[] args) {
Info<Integer> info = fun(520); //根据泛型方法返回具体的泛型类实例
Info<Float> info1 = fun(32.01f);
System.out.println(info); //打印泛型对象
System.out.println(info1);
}
/**
* 通过泛型方法返回泛型类实例
* 对返回Info对象的泛型类型上进行定义,泛型类型为Number类或其子类
* @param param
* @param <T>
* @return
*/
public static <T extends Number> Info<T> fun(T param){
Info<T> info = new Info<T>(); //根据传入的数据类型实例化Info
info.setVar(param); //将传递的内容设置到Info对象的var属性中
return info; //返回实例化对象
}
}
泛型的嵌套设置
package chapter_ten;
class InfoDemo<T,V>{
private T var;
private V value;
public InfoDemo(){}
public InfoDemo(T var, V value){ //构造方法传入参数
this.var = var;
this.value = value;
}
//setter()和getter()方法
public void setVar(T var){
this.var = var;
}
public T getVar(){
return this.var;
}
public void setValue(V value){
this.value = value;
}
public V getValue(){
return this.value;
}
}
//泛型嵌套设置,S类型在实例化时会以InfoDemo<String,Integer>类型传入
class Demo<S>{
private S info;
public Demo(){}
public Demo(S info){ //构造方法传入参数
this.info = info;
}
public void setInfo(S info){
this.info = info;
}
public S getInfo(){
return this.info;
}
}
//对于泛型嵌套类的操作
public class Pag335 {
public static void main(String[] args) {
Demo<InfoDemo<String,Integer>> demo = null; //定义泛型嵌套类对象demo
InfoDemo<String,Integer> infoDemo = null; //定义泛型类infoDemo对象
infoDemo = new InfoDemo<String, Integer>("高立卫", 21); //通过构造方法实例化泛型对象
demo = new Demo<InfoDemo<String,Integer>>(infoDemo); //通过构造方法实例化嵌套泛型类对象
System.out.println(demo.getInfo().getVar()
+ "
" + demo.getInfo().getValue()); //输出嵌套泛型类中的数据
}
}