zoukankan      html  css  js  c++  java
  • 泛型类

     JDK1.5开始的泛型

    在定义集合的时候同时定义集合中对象的类型

    可以在定义Collection时指定

    也可以循环时用Iteratorr指定

    好处:

      增强程序的可读性和稳定性。

    下面为泛型类改进

    package com.liushuaishuai;
    
    public class Generic<T> {
        private T t;
    
        public Generic() {
        }
    
        public Generic(T t) {
            this.t = t;
        }
    
        public T getT() {
            return t;
        }
    
        public void setT(T t) {
            this.t = t;
        }
    
    }
    

     泛型类 测试类:

    package com.liushuaishuai;
    
    public class GenericDemo {
        public static void main(String[] args) {
            Generic<String> g1 = new Generic<String>();
            g1.setT("林青霞");
    
            Generic<Integer> g2 = new Generic<Integer>();
            g2.setT(30);
            System.out.println(g1.getT()+","+g2.getT());
        }
    }
    

     下面为泛型方法改进

    泛型方法格式:

    package com.liushuaishuai;
    /*
    public class Generic<T> {
        private T t;
    
        public Generic() {
        }
    
        public Generic(T t) {
            this.t = t;
        }
    
        public T getT() {
            return t;
        }
    
        public void setT(T t) {
            this.t = t;
        }
    
    }
    */
    //泛型类改进
    /*
    public class Generic<T> {
        public void show(T t) {
            System.out.println(t);
        }
    
    }
    */
    //泛型方法改进
    public class Generic {
        public<T> void show(T t) {
            System.out.println(t);
        }
    }
    

     泛型方法测试:

    package com.liushuaishuai;
    
    public class GenericDemo {
        public static void main(String[] args) {
            /*
            Generic<String> g1 = new Generic<String>();
            g1.setT("林青霞");
    
            Generic<Integer> g2 = new Generic<Integer>();
            g2.setT(30);
            System.out.println(g1.getT()+","+g2.getT());
            */
    
            Generic g3 = new Generic();
            g3.show("林青霞");
    
            g3.show(30);
    
            g3.show(true);
    
    
        }
    }
    

     

      接口类

    package com.Test01;
    
    public interface Generic<T> {
        public <T> void show(T t);
    }
    

     接口的实现类

    package com.Test01;
    
    public class GenericImpl<T> implements Generic<T> {
    
        @Override
        public <T> void show(T t) {
            System.out.println(t);
    
        }
    }
    

     测试类

    package com.Test01;
    
    public class GenericDemo {
        public static void main(String[] args) {
            Generic g1 = new GenericImpl();
            g1.show("hello");
            g1.show(30);
            g1.show(true);
            g1.show(12.34);
        }
    }
    

     结果
    :hello
    30
    true
    12.34

     

    package com.Test01;
    
    public class GenericDemo {
        public static void main(String[] args) {
            /*
            Generic g1 = new GenericImpl();
            g1.show("hello");
            g1.show(30);
            g1.show(true);
            g1.show(12.34);
            */
            
    
    
            System.out.println(sum(12,15,13,14));
    
        }
        public static int sum(int...a) {
            int sum =0;
            for(int i = 0;i<a.length;i++) {
                sum += a[i];
    
    
            }
            return sum;
    
    
    
        }
    }
    

     可变参数的使用

    package com.liushuaishuai;
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.Set;
    /*
    1,Arrays工具中有一个静态方法:
            public static <T> list<T> asList(T....a):返回指定数组支持的固定大小
     2,List接口中有一个静态方法:
     public static <E> list<E> of (E...elements);返回包含任意数量元素的不可变列表
    
     3,Set接口中有一个静态方法:
     public static <E> Set<E> of (E...elements):返回一个包含任意数量元素的不可变集合
     */
    
    public class ArgsDemo02 {
        public static void main(String[] args) {
            List<String> list = Arrays.asList("hello", "world", "java");
           // list.add("javaee");//UnsupportedOperationException
            //list.remove("world");//UnsupportedOperationException: remove
    
    //        public static <T> list<T> asList(T....a):返回指定数组支持的固定大小
    
            list.set(1,"666");
            System.out.println(list);//[hello, 666, java]
    
            System.out.println("-------------------------");
           // public static <E> list<E> of (E...elements);返回包含任意数量元素的不可变列表
            List<String> list1 = List.of("hello", "world", "javase", "javaee");
            //list1.add("GG");//UnsupportedOperationException
            //list1.remove("world");//UnsupportedOperationException
            //list1.set(1,"666");    //UnsupportedOperationException
            System.out.println(list1);
    
    
            System.out.println("---------------------");
    
    
    //        public static <E> Set<E> of (E...elements):返回一个包含任意数量元素的不可变集合
           // Set<String> set = Set.of("hello", "world", "java", "55","55");//IllegalArgumentException
            Set<String> set = Set.of("hello", "world", "java", "55");
    
            //set.add("ll");//UnsupportedOperationException
           // set.remove("hello");//UnsupportedOperationException
           // set.
    
            System.out.println(set);
    
    
        }
    }
    
  • 相关阅读:
    判断进程是64bit还是32bit
    判断是否是64位系统(之前那个是判断是否是64位进程不一样。注意区分)
    以程序的方式操纵NTFS的文件权限
    Windows平台内核级文件访问
    TLSAlloc()
    Android开发效率的小技巧
    二分查找法
    unittest 框架
    ASP.NET MVC中使用Ninject
    Java内存区域与内存溢出异常
  • 原文地址:https://www.cnblogs.com/lsswudi/p/11368704.html
Copyright © 2011-2022 走看看