大白糖奶兔的Blog
大白糖奶兔的Blog
Java学习-Day09泛型
Java学习-Day09泛型

泛型,就是将类型参数化,设置为参数,产生泛型的类,泛型的方法及泛型的方法

泛型类

package 第三章类的重用;

public class 泛型 {
    //泛型的类,参数是类型Type,接收传过来的类型参数
//    使用GeneralType类的时候,需要给出类型实参
//    从而确定类里面的属性是什么类型的,方法处理的是什么类型的数据,方法的返回值什么类型
    static class GeneralType <Type>{
        Type object;
//      这是构造函数,用参数来初始化实例对象,this指的是实例对象
        public GeneralType(Type object){
            this.object = object;
        }
//      返回对象的属性值
        public Type getObj(){
            return object;
        }
    }

    public static void main(String[] args) {
        //创建GeneralType类的对象时候要传入类型,引用类型Integer或者基本数据类型Double
        GeneralType<Integer> i = new GeneralType<Integer>(2);
        //       都是通过GeneralType创建的对象,但类型不同
        GeneralType<Double> d  = new GeneralType<Double>(0.33);
        System.out.println("i.object=" + (Integer)i.getObj());
//        实例对象d是Double类型,不能转换成Integer类型,所以编译错误
//        System.out.println("d.object=" + (Integer)d.getObj());编译错误
    }
}

使用通配符

package 第三章类的重用;

public class 使用通配符 {
    static class GeneralType <Type>{
        Type object;
        //      这是构造函数,用参数来初始化实例对象,this指的是实例对象
        public GeneralType(Type object){
            this.object = object;
        }
        //      返回对象的属性值
        public Type getObj(){
            return object;
        }
    }
    static class ShowType{
//        实参是用GeneralType所给的不同类型的实参构造的对象
        public void show(GeneralType<?> o){
            System.out.println(o.getObj().getClass().getName());
        }
    }

    public static void main(String[] args) {
        ShowType st = new ShowType();
        GeneralType<Integer> i = new GeneralType<Integer>(2);
        GeneralType<String> s = new GeneralType<String>("Hello");
        st.show(i);
        st.show(s);
    }
}

有限制的泛型

  • 在参数“Type”后面使用“extends”关键字并加上类名或接口名,表明参数所代表的类型必须是该类的子类或者实现了该接口(对于实现了某接口的有限制泛型,也是使用extends关键字,而不是implement关键字)
package 第三章类的重用;

public class 有限制的泛型 {
    static class GeneralType <Type extends Number>{
        Type object;
        //      这是构造函数,用参数来初始化实例对象,this指的是实例对象
        public GeneralType(Type object){
            this.object = object;
        }
        //      返回对象的属性值
        public Type getObj(){
            return object;
        }
    }

    public static void main(String[] args) {
        GeneralType<Integer> i = new GeneralType<Integer>(2);
//        非法!只能是Number或Number的子类
//        GeneralType<String> s = new GeneralType<String>("Hello");
    }
}

发表评论

textsms
account_circle
email

大白糖奶兔的Blog

Java学习-Day09泛型
泛型,就是将类型参数化,设置为参数,产生泛型的类,泛型的方法及泛型的方法 泛型类 package 第三章类的重用; public class 泛型 { //泛型的类,参数是类型Type,接收传过来…
扫描二维码继续阅读
2020-03-07
Title - Artist
0:00