Java 泛型

 //泛型 
    //泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
    // 泛型的参数只能代表引用类型
    public static void main(String[] args) {
        //泛型方法
        String[] charArray = { "baba", "mama","daye" };
        say(charArray);
        Integer[] integers = { 110, 112,113 };
        say(integers);
        //泛型参数范围
        Chinese chinese = new Chinese();
        talk(chinese);
        Foreigner foreigner = new Foreigner();
        talk(foreigner);
//        Dog dog = new Dog();
//        talk(dog);
        //泛型类
        Person1<String> person1  = new Person1();
        person1.setT("string");
        Person1<Integer> person2  = new Person1();
        person2.setT(1);
        System.out.printf("整型值为 :%d\n\n", person2.getT());
        System.out.printf("字符串为 :%s\n", person1.getT());
        //类型通配符
        List list = new ArrayList();
        list.add(1);
        list.add("kong");
        getData(list);
        getUperNumber(list);
        // <? extends T>表示该通配符所代表的类型是T类型的子类。
        // <? super T>表示该通配符所代表的类型是T类型的父类。
    }

    public static void getData(List<?> data) {
        System.out.println(data.get(0)+"-data-" + data.get(1));
    }

    public static void getUperNumber(List<? extends Number> data) {
        System.out.println(data.get(0)+"-getUperNumber-" + data.get(1));
    }

    public  static <E> void say(E[] s ){
        for ( E element : s ){
            System.out.println(element+"打我" );
        }
    }
    public static<T extends Person> void talk(T p){
        p.talk();
    }

    static class Person {
        public Person() {
        }

        public void talk(){
//            System.out.println(s);
        }
    }
    static class Chinese extends Person{
        public Chinese() {
        }

        @Override
        public void talk() {
            System.out.println("zhongguoren");
        }
    }
    static class Foreigner extends Person{
        public Foreigner() {
        }
        @Override
        public void talk() {
            System.out.println("waiguoren" );
        }

    }
    static class Dog {
        public Dog() {
        }
        public void talk() {
            System.out.println("gou" );
        }
    }

    static class Person1<T> {
        T t;
        public Person1() {
        }

        public T getT() {
            return t;
        }

        public void setT(T t) {
            this.t = t;
        }
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值