泛型的理解与相关操作

package com.hncu.mygenericdemo4;

import java.util.ArrayList;

public class Demo4 {
    //泛型的类型通配符      ?   ?extends xxx   ? super xxx
    // java.lang.Object
    //java.lang.Number
    //java.lang.Integer 从下到上依次继承
    public static void main(String[] args) {
        ArrayList<Object> list1 = new ArrayList<>();
        ArrayList<Number> list2 = new ArrayList<>();
        ArrayList<Integer> list3 = new ArrayList<>();
        method1(list1);     //?可以接受任何类型,但是并不能把元素添加到ArraList中去了
        method1(list2);
        method1(list3);
        //method2(list1);   报错,?extends xxx 只能接受xxx的本身的对象和它的子类对象
        method2(list2);
        method2(list3);
        method3(list1);
        method3(list2);
        //method3(list3);   报错,?super xxx 只能接受xxx本身对象和它的父类对象
    }
    private static void method1(ArrayList<?> list){}
    private static void method2(ArrayList<? extends Number> list){}
    private static void method3(ArrayList<? super Number> list){}
}

 

package com.hncu.mygenericdemo1;

public class Genneric<T> {
    private T age;

    public T getAge() {
        return age;
    }

    public void setAge(T age) {
        this.age = age;
    }

    public Genneric() {
    }
}
package com.hncu.mygenericdemo1;

public class Demo1 {
    /*泛型类的使用,泛型的使用可以省去很多重复的步骤*/
    public static void main(String[] args) {
        Genneric<String> g1 = new Genneric<>();      //泛型为String,所以方法也会按照泛型去操作
        g1.setAge("12");
        System.out.println(g1.getAge());
        System.out.println("-----------------");
        Genneric<Integer> g2 = new Genneric<>();
        g2.setAge(19);
        System.out.println(g2.getAge());
    }
}

package com.hncu.mygenericdemo2;

public class Generic {
    public <T>void show(T t){
        System.out.println(t);
    }

    public Generic() {
    }
}
package com.hncu.mygenericdemo2;

public class Demo2 {
    //泛型方法的使用,使得类中大致相同的方法不用重载
    public static void main(String[] args) {
        Generic g = new Generic();      //Generic类中的方法是泛型方法,可以接收不同的类型
        g.show("hello");
        g.show(520);
        g.show(true);
    }
}
package com.hncu.mygenericdemo3;

public interface Generic <T>{
    //泛型接口
    public abstract void show(T t);
}
package com.hncu.mygenericdemo3;

public class Demo3 {
    //泛型接口的使用
    public static void main(String[] args) {
        GenericImple1<String> g1 = new GenericImple1<>();
        GenericImple1<Integer> g2 = new GenericImple1<>();
        g1.show("hello");
        g2.show(520);
        GenericImple2 g3 = new GenericImple2();
        g3.show(true);
    }
}

class GenericImple1<T> implements Generic<T>{
    //未传入实参实现接口的类也是泛型类

    @Override
    public void show(T t) {
        System.out.println(t);
    }
}

class GenericImple2 implements Generic<Boolean>{
    //泛型接口传入实参后,类中的方法都以实参进行操作
    @Override
    public void show(Boolean b) {
        System.out.println(b);
    }
}

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值