学习java之泛型类和泛型方法

  上一篇博文中我自己试着用了下泛型类,昨天看java编程思想一书,发现里面有这么一段话:

使用参数化方法而不是用参数化类的方便之处在于:你不必为需要应用的每种不同类型都使用一个参数去实例化这个类,并且你可以将其定义为静态的。当然,你不能总是选择使用参数化方法而不是参数化类,但是它应该成为首选。

  这句话有三层意思:

  1)参数化类每次实例化的时候都需要调入每种类型。

  2)参数化方法可以定义成静态的。作为一个初学者我是这么理解的,能被参数化的方法必定是getXXX之类的这种,而且在调用方法的时候会传参进来,所以不会对类中的域产生影响,所以可以定义为静态的,方便调用。

  3)参数化方法虽然是首选,但二者选择用谁还要视情况而定。

 

  参数化类:

class Test<T> {
    private T t;
    public Test (T t) {
        this.t = t;
    }
    public T get() {
        return t;
    }
}

  参数化方法:

class Test {
    public static <T> T get(T t) {
        return t;
    }
}

  二者调用的区别:

//参数化类的调用
Test<Integer> num = new Test<Integer>(6);
Test<String> str = new Test<String>("6");
System.out.println(num.get());
System.out.println(str.get());
//参数化方法的调用
Integer num = 6;
String str = "6";
System.out.println(Test.get(num));
System.out.println(Test.get(str));

  如果使用参数化类的方法,类中必须要有重载的构造方法;而参数化方法的方法,调用就非常轻松了。

转载于:https://www.cnblogs.com/RainingDays/p/3518441.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值