zoukankan      html  css  js  c++  java
  • Java泛型方法定义及泛型类型推断

    泛型的推断

        @Test
        public void test3(){
            //类型推断时使用两个类型的最小公倍数
            int x1 = add(3,4);
            Number x2 = add(3.5,4);
            Object obj = add(3,"abc");
        }
        //在返回类型前加上<T>
        public <T> T add(T x,T y){
            return x;
        }

    传入一个数组,交换其中的两项:

        @Test
        public void test4(){
            String[] result = swap(new String[]{"abc","xyz","999"}, 1, 2);
            for(String s:result){
                System.out.println(s);
            }
            Book[] bs = swap(new Book[]{new Book("三国演义","罗贯中"),new Book("水浒传","施耐庵"),new Book("红楼梦","曹雪芹")}, 0, 2);
            for(Book b:bs){
                System.out.println(b.getName()+","+b.getAuthor());
            }
            //以下做法错误,T不可以为基本类型
            //int[] arr = swap(new int[]{1,2,3},1,2);
        }
        //在返回类型前加上<T>
        public <T> T[] swap(T[] a,int i,int j){
            T temp = a[i];
            a[i] = a[j];
            a[j] = temp;
            return a;
        }

    定义泛型时限定类型:

        @Test
        public void test4(){
            String[] result = swap(new String[]{"abc","xyz","999"}, 1, 2);
            for(String s:result){
                System.out.println(s);
            }
            Book[] bs = swap(new Book[]{new Book("三国演义","罗贯中"),new Book("水浒传","施耐庵"),new Book("红楼梦","曹雪芹")}, 0, 2);
            for(Book b:bs){
                System.out.println(b.getName()+","+b.getAuthor());
            }
            //以下做法错误,T不可以为基本类型
            //int[] arr = swap(new int[]{1,2,3},1,2);
        }
        //在返回类型前加上<T>
        public <T extends Object> T[] swap(T[] a,int i,int j){
            T temp = a[i];
            a[i] = a[j];
            a[j] = temp;
            return a;
        }

    上面代码要求T要是Object的子类,这其实是废话,如果把Object改为Number则编译时上面的两个方法都会报错,因为String和Book类都不是Number的子类。

  • 相关阅读:
    ping
    android Handler总结
    配置网络测试环境的批处理
    shell 的选项解析
    [转] Linux 中共享库的搜索
    SecureCRT 脚本一则(0720.Rev.1)
    使用 Wget 完成自动 Web 认证(推 portal)
    shell 选项解析之需求一:多路径自动补全
    getopts 的简单模拟(09.12 Rev)
    ThinkPHP框架使用心得三 RBAC权限控制(2)简要原理
  • 原文地址:https://www.cnblogs.com/lenve/p/4518001.html
Copyright © 2011-2022 走看看