zoukankan      html  css  js  c++  java
  • Java(21):泛型

    package zzz;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    import javax.sound.midi.VoiceStatus;
    
    import com.sun.org.apache.xpath.internal.operations.String;
    
    
    public class GenericsDemo {
    
        public static void main(String[] args) {
            
            List<String> stringArrayList = new ArrayList<String>();
            List<Integer> integerArrayList = new ArrayList<Integer>();
            stringArrayList.add("aa");
            stringArrayList.add("bbb");
            stringArrayList.add("c");
            for(String item : stringArrayList) {
                System.out.println(item);
            }
            
            System.out.println("********泛型类*******");
    
            //    1
            Generic<String> g1 = new Generic<String>("abc");
            System.out.println(g1.getKey());
            //    2
            Generic<Integer> g2 = new Generic<Integer>(666);
            System.out.println(g2.getKey());
            //    3
            Generic g3 = new Generic(55.55);
            System.out.println(g3.getKey());
            
            System.out.println("********泛型接口*******");
            
            FruitGenerator f = new FruitGenerator();
            System.out.println(f.next());
            
            System.out.println("********泛型方法*******");
            
            Banana banana = new Banana();
            Pear pear = new Pear();
            P person = new P();
            
            GFruit<F> gf = new GFruit<F>();
            gf.show_1(banana);
            gf.show_2(pear);
    //        gf.show_1(person); error,gf指定泛型是F
            gf.show_2(person);
            
            String[] x = new String[] {"q", "w", "e", "r"};
            Integer[] i = new Integer[] {3, 5, 7};
            Lister lister = new Lister();
            lister.printArray(x);
            lister.printArray(i);
        }
    }
    
    // 普通的泛型类
    class Generic<T> {
        private T key;
        
        public Generic(T key) {
            this.key = key;
        }
        public T getKey() {
            return key;
        }
    }
    
    //    泛型接口
    interface Generator<T> {
        public T next();
    }
    
    class FruitGenerator implements Generator<String> {
        private String[] fruits = new String[] {"apple", "banana", "pear"};
        @Override
        public String next() {
            Random rand = new Random();
            return fruits[rand.nextInt(3)];
        }
    }
    
    //    类中的泛型方法
    class F {
        @Override
        public String toString() {
            return "fruit";
        }
    }
    class P {
        @Override
        public String toString() {
            return "person";
        }
    }
    class Banana extends F {
        @Override
        public String toString() {
            return "banana";
        }
    }
    class Pear extends F {
        @Override
        public String toString() {
            return "pear";
        }
    }
    class GFruit<T> {
        public void show_1(T t) {
            System.out.println(t.toString());
        }
        public <T> void show_2(T t) {
            System.out.println(t.toString());
        }
    }
    
    class Lister {
        public <E> void printArray(E[] array) {
            for (E item : array) {
                System.out.print(item + ", ");
            }
        }
    }

     详细参考:https://blog.csdn.net/s10461/article/details/53941091

    package zzz;
    
    //    泛型类
    
    public class GenClass {
        
        public static void main(String[] args) {
            
            Pair<String> pairStr = new Pair<String>();
            pairStr.setFirst("first");
            pairStr.setSecond("second");
            
            Pair<Integer> pairInt = new Pair<Integer>();
            pairInt.setFirst(1);
            pairInt.setSecond(2);
            
            System.out.println(pairStr.getFirst());        //first
            System.out.println(pairInt.getSecond());    //2
            
        }
    
    }
    
    //    泛型类
    class Pair<T> {
        private T first;
        private T second;
        
        public Pair() {
            
        }
        public Pair(T first, T second) {
            this.first = first;
            this.second = second;
        }
        public T getFirst() {
            return first;
        }
        public void setFirst(T first) {
            this.first = first;
        }
        public T getSecond() {
            return second;
        }
        public void setSecond(T second) {
            this.second = second;
        }
        
    }
    package zzz;
    
    //    泛型方法
    
    public class GenMethod {
    
        public static void main(String[] args) {
            
            Integer[] arrInt = {1,2,3,4,5};
            Double[] arrDouble = {3.1, 5.5, 9.7, 2.8};
            Character[] arrChar = {'z', 's', 'y', 'n'};
            Lister lister = new Lister();
            
            lister.printArray(arrInt);
            lister.printArray(arrDouble);
            lister.printArray(arrChar);
            
            System.out.println("**********");
            
            lister.printString(999.999);
            lister.printString("zzz");
            lister.printString('a');
            
        }
        
    }
    
    class Lister {
        public <E> void printArray(E[] array) {
            for (E item : array) {
                System.out.print(item+", ");
            }
            System.out.println();
        }
        
        public <E> void printString(E str) {
            System.out.println(str);
        }
    }
    package zzz;
    
    //    泛型接口
    
    public class GenInterface {
    
        public static void main(String[] args) {
            
            Type a = new Animal();
            System.out.println(a.func());
            
            Type b = new Age();
            System.out.println(b.func());
            
        }
        
    }
    
    interface Type<T> {
        public T func();
    }
    
    class Animal implements Type<String> {
        @Override
        public String func() {
            return "animal";
        }
    }
    
    class Age implements Type<Integer> {
        @Override
        public Integer func() {
            return 18;
        }
    }
  • 相关阅读:
    MySql开启GTID和多线程复制功能
    MySQL自增锁等待问题解决
    MySQL超大表如何提高count速度
    MySQL如何计算重要的指标,来确定配置是否正确
    MySQL传输表空间使用方法
    用MySQL的optimizer_trace进行sql调优
    MySQL主从复制读写分离如何提高从库性能-实战
    Mongo创建文档
    Mongo索引
    Mongo开启查询日志
  • 原文地址:https://www.cnblogs.com/kenantongxue/p/14040155.html
Copyright © 2011-2022 走看看