栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 泛型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 泛型

泛型(Generic)
    在编译阶段识别泛型,但是在jvm运行之前就将泛型的痕迹擦除
    泛型即参数化类型,在jdk1.5的版本之后才开始的概念
    参数化类型?
        将一种数据类型以参数的形式传递给类,接口,方法中
    好处:可以将运行期间的问题提前到编译阶段进行检查
    泛型接口:
        public interface List extends Collection{}
    泛型类:
        public class ArrayList
            extends AbstractList
            implements List, RandomAccess, Cloneable, Serializable
    泛型方法:
        static  List            asList(T... a)
                                           返回有指定数组支持的固定大小的列表

    泛型标记命名是可以自定义的
        jdk中常见的泛型的名称有:
            K(key键)
            V(value值)
            E(Element元素)
            T(Type类型)
            通配符 任意的类型都可以 Object


public class MyClass {
    //访问控制修饰符 返回值数据类型 方法名(参数列表){
    //          方法体;
    // }
    public I add(I a,I b){
        System.out.println(a);
        System.out.println(b);
        return null;
    }
    public static void main(String[] args){
        //创建对象的时候指定数据类型
        MyClass mc = new MyClass<>();
        Integer x = mc.add(10,20);

        MyClass m = new MyClass<>();

    }
}


    泛型上下边界的限定
     是 Upper Bound(上限)的通配符,用来限制元素的类型的上限的 比如:
    List fruits;
    表示集合中的元素类型上限为Fruit类型,即只能是Fruit或者Fruit的子类,因此对于下面的
    赋值合理的是:
        fruits = new ArrayList();
        fruits = new ArrayList();
    如果集合中的元素类型为Fruit的父类就会出现错误,比如:
    fruits = new ArrayList();//出现编译不通过的情况

            



    是Lower Bound(下限)的通配符,用来限制元素的类型下限,比如:
        List apples;
        表示集合中的元素的类型下限是Apple类型,即只能是Apple或者Apple的父类,
        因此合理的赋值:
            apples = new ArrayList();
            apples = new ArrayList();
            apples = new ArrayList();

        如果Apple的兄弟类和子类会编译失败

                 
public class Animal {
}

--------------------------------------------------------

public class Cat extends Animal{
}

--------------------------------------------------------

public class Dog extends Animal{
}

--------------------------------------------------------



public class Test {
    public static void main(String[] args) {
        //上限:
        //
        //ArrayList animals = new ArrayList();
        ArrayList animals = new ArrayList();
        ArrayList animals1 = new ArrayList();
        ArrayList animals2 = new ArrayList();

        //下限
        //
        ArrayList dogs = new ArrayList();
        ArrayList arrayList = new ArrayList();
        ArrayList dogs1 = new ArrayList();
        //ArrayList dogs2 = new ArrayList();


        //赋值
        ArrayList dogs2 = new ArrayList();
        dogs2.add(new Dog());
        dogs2.add(new Dog());
        dogs2.add(new Dog());
        ArrayList animals3 = dogs2;
        System.out.println(animals3.size());

        ArrayList animals4 = new ArrayList();
        animals4.add(new Animal());
        animals3 = animals4;
        System.out.println("----" + animals3.size());

        ArrayList objects = new ArrayList();
        objects.add(new Object());
        //ArrayList animals4 = objects;

        ArrayList dogs3 = new ArrayList();
        dogs3.add(new Dog());

        ArrayList dogss = dogs3;
        dogss = objects;
        dogss = animals4;




    }
} 

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号