• 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;
        }
    }
  • 相关阅读:
    IPv6 tutorial – Part 8: Special addresses
    IPv6 tutorial – Part 7: Zone ID and unique local IPv6 unicast addresses
    ipconfig命令
    netsh命令
    Android-用你自己的自定义图像资源(2)
    Android 按下电源按钮关闭小学习过程的整个长度
    将android界面背景设置为黑色
    capturing self strongly in this block is likely to lead to a retain cycle
    Hadoop-2.2.0中国文献—— Web应用代理
    使用live delegate on解决js后装html故障问题
  • 原文地址:https://www.cnblogs.com/kenantongxue/p/14040155.html
Copyright © 2020-2023  润新知