0
点赞
收藏
分享

微信扫一扫

泛型的介绍

Fifi的天马行空 2022-04-30 阅读 91

文章目录

泛型

1.1内容

泛型的本质就是“数据类型的参数化泛型”理解为数据类型的一个占位符
这种参数类型可以用在类、接口和方法中

类型擦除

1.2 泛型类

代码实例

//测试泛型类  
//传入并不指明类型  
public class fx<T>{  
    private T flag;  
    //set 方法不需要返回值 传入参数  
    public  void setFlag(T flag){  
        this.flag=flag;  
    }  
    //get 方法需要返回值 不传入参数  
    public T getFlag(){  
        return  this.flag;  
    }  
  
    public static void main(String[] args) {  
        //在使用该类时,传入数据类型  
        fx <String> fx01=new fx<>();  
        //获取值  
        fx01.setFlag("猪猪");  
        fx01.getFlag();  
        //接收值  
        String s1= fx01.getFlag();  
        System.out.printf(s1);  
    }  
  
}

1.3 泛型接口

代码实例

//测试泛型接口下一步测试泛型方法  
public class generic_interface  {  
    public static void main(String[] args) {  
        interfance i =new interfance();  
        i.getName("sd1sdf");  
        //使用泛型接口开修饰对象  
        //传入类型  
        genertic <String> g=new interfance();  
         String name=g.getName("dsf");  
        System.out.println(g);  
    }  
}  
//定义一个接口  
interface  genertic<T> {  
    T getName(T name) ;  
}  ``![[A-泛型 2022-04-30 17.49.53.excalidraw]]``
//定义一个实现类  
class interfance implements genertic<String>{  
  
    @Override  
    public String getName(String name) {  
        return name;  
    }  
}

2:泛型方法

静态方法

代码示例

//测试静态方法  
public class generic_method {  
    public static void main(String[] args) {  
  
    }  
    //定一一个没有返回值得的方法  
    public <T> void gm(T name){  
        System.out.println(name);  
    }  
    //定义一个有返回值的方法  
    public <T> T getname(T name){  
        return name;  
    }  
}

非精静态方法

代码示例

public class MethodGeneric { 

public <T> void setName(T name){ 

System.out.println(name);


}
public <T> T getName(T name){ 

return name;

}

public class Test3 { 

public static void main(String[] args) { 

MethodGeneric methodGeneric = new MethodGeneric();

methodGeneric.setName("oldlu"); 

methodGeneric.setName(123123);

MethodGeneric methodGeneric2 = new MethodGeneric();

String name = methodGeneric2.getName("Bjsxt"); 

Integer name1 = methodGeneric2.getName(123); 
System.out.println(name1); 

System.out.println(name);

}
2.4.2 静态方法

3:通配符

//测试通配符  
public class willcard {  
    public static void main(String[] args) {  
     b b01=new b();  
     a <String> a01=new a<>();  
     a01.setA01("猪猪");  
     System.out.println(a01.getA01());  
     b01.b(a01);  
  
    }  
  
}  
class a <T>{  
    public T a01;  
    public void setA01(T a01 ){  
        this.a01=a01;  
        System.out.println(a01);  
    }  
    public T getA01(){  
        return this.a01;  
    }  
  
}  
class b  {  
    public void b(a <?> a01){  
        System.out.println(a01.getA01());  
    }  
  
}

哈哈多理解

至于通配符上下限定不了解。

举报

相关推荐

0 条评论