Java泛型的定义与使用

一、使用泛型的优缺点

1.不使用泛型

优点:

创建集合时不声明泛型,则默认为Object类型,可存储任意的数据类型

缺点:

不安全,会引发异常

2.使用泛型

优点:

1.避免了类型转换的麻烦,存储的类型一致方便操作
2.把运行期的异常提升到编译期,减少后期不必要的麻烦

缺点:

只能存储特定的一种数据类型

二、定义含有泛型的接口

/*
定义含有泛型的接口
 */
public interface GenericInterface<I> {
    void method(I i);
}

public class Demo01 {
    public static void main(String[] args) {
    	/*
        在接口定义泛型,作为方法的参数使用
         - 使用了匿名内部类和匿名对象
        */
        new GenericInterface<String>(){
            @Override
            public void method(String s) {
                System.out.println(s);
            }
        }.method("小斑马");
    }
}

三、含有泛型的类和方法

1.含有泛型的类

/*
定义一个使用泛型的类
当不确定数据类型的时候可以使用泛型
创建对象时确定那种数据类型传递给泛型
 */
public class GenericClass<E> {
    private E name;

    public E getName() {
        return name;
    }

    public void setName(E name) {
        this.name = name;
    }
}

2.含有泛型的方法

/*
定义含有泛型的方法
格式:修饰符<泛型> 返回值类型 方法名(参数列表(使用泛型)){}
 */
public class GenericMethod {
    public static void main(String[] args) {
        method2("e");
    }
    //含有泛型的方法
    public <M> void method1(M m){
        System.out.println(m);
    }
    //含有泛型的静态方法
    public static <N> void method2(N n){
        System.out.println(n);
    }

}

3.使用含有泛型的类和方法

public class Demo01 {
    public static void main(String[] args) {
        demo01();
        demo02();
    }

    /*
    使用含有泛型的类
    */
    private static void demo01() {
        GenericClass<Integer> gc1 = new GenericClass();
        gc1.setName(1);
        System.out.println(gc1.getName()+12);

        GenericClass<String> gc2 = new GenericClass();
        gc2.setName("小斑马");
        System.out.println(gc2.getName());
    }

    /*
    使用含有泛型的方法
     */
    private static void demo02() {
        //使用含有泛型的方法
        GenericMethod gm = new GenericMethod();
        gm.method1("qwer");
        gm.method1(1);

        //使用含有泛型的静态方法
        GenericMethod.method2(true);
        GenericMethod.method2('小王');
    }
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值