泛型和可变长参数

1. 泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动隐式的,提高代码的重用率。

定义泛型成员变量时,则类必须实现泛型。

定义泛型方法则无所谓类是否实现泛型。

2. J2SE 1.5中提供了Varargs机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。

只要在一个形参的类型参数名之间加上三个连续的“.”(即“...”,英文里的句中省略号),就可以让它和不确定个实参相匹配。而一个带有这样的形参的方法,就是一个实参个数可变的方法。

3.      代码案例

      package t; 

 

public class TDemo<T> {

    private Tobj;

    public void setObj(T obj) {

        this.obj = obj;

    }

   

    public T getObj() {

        returnobj;

    }

   

    public static <T> void fan(T... parameterTypes){

        for (T classs : parameterTypes) {

            System.out.println(classs.getClass().getName());

        }

    }

   

    public void  what(T... parameterTypes){

        for (T classs : parameterTypes) {

            System.out.println(classs.getClass().getName());

        }

    }

   

    public void  what1(Class... parameterTypes){

        for (Class classs : parameterTypes) {

            System.out.println(classs.getName());

        }

    }

   

    public void showType(){

        System.out.println(obj.getClass().getName());

    }

   

    public static void main(String[] args) {

        TDemo<Integer> intDemo =new TDemo<Integer>();

        intDemo.setObj(1);

        System.out.println(intDemo.getObj());

        intDemo.showType();

       

        TDemo<String> strDemo = new TDemo<String>();

        strDemo.setObj("1");

        System.out.println(strDemo.getObj());

        strDemo.showType();

       

        Short short1 = 1;

        TDemo otherDemo = new TDemo();

        otherDemo.setObj(short1);

        otherDemo.setObj("123");

        System.out.println(otherDemo.getObj());

        otherDemo.showType();

       

        otherDemo.what(String.class,int.class,Integer.class);

   

        fan("1",1,new Integer(1));

 

           TDemo<ArrayList> tdemoList =new TDemo<ArrayList>();

 

            TDemo<? extends Collection> tdemoList1 =new TDemo<ArrayList>();

     

        TDemo<?> tdemoList2 =new TDemo<ArrayList>();

    }

}

 

输出结果:

1

java.lang.Integer

1

java.lang.String

123

java.lang.String

java.lang.Class

java.lang.Class

java.lang.Class

java.lang.String

java.lang.Integer

java.lang.Integer
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值