zoukankan      html  css  js  c++  java
  • 黑马程序员-泛型

    出现原因:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个安全机制

    • 好处:

    1.将运行时出现的ClassCastException,转移到了编译时期,就是为了方便我们解决问题,让程序运行时出现的问题减少,

    2.重要的是:避免的强制类型转换的麻烦

    • 泛型的格式   (通常在集合框架里面用得比较多一点)

    用一个<>当中包含一个我们指定的数据类。如ArrayList<String>

    <>就是用来接收数据类型,就类比函数传参数,

    注意:只能传递引用数据类型

    java用到的泛型对象我们可以到API文档中具体查看;

    • 什么时候定义泛型呢?

    当我们类当中我们要操作的数据类型不确定的时候。

    早期我们定义一个Object来完成扩展

    现在定义泛型来扩展

    • 泛型类定义的泛型,在整个类中就有效,如果类当中的方法被调用,那么泛型类被定义

    明确要操作的对象以后,那么我们所要操作的类型也就固定了。如何解决这个问题呢?

    答:为了让不同的方法可以操纵不同的类型,而去我们的类型还不确定,那么我们可以把泛型定义咋

    方法上面,

    public <T> void Show(T tt);//泛型方法的定义方式

    public static <T> void method( M mm); //泛型的静态方法

    特殊之处:静态方法不可以访问类上定义的泛型,

    • Java能够定义泛型类。我们能不能自己定义呢?
    package com.text;
    
    public class zhulang
    {
    
        /**
         *自己定义的泛型类。
         * @param args
         */
        public static void main(String[] args)
        {
            //泛型类明确了存储的内容只能在里面存储不同的对象
            Mygenerosity<Tool> my = new Mygenerosity<Tool>();
            
            my.setObject(new Tool());
            Tool t = (Tool)my.getObject();
            
            //调用泛型方法
             my.Show("泛型方法");
            //调用静态的方法
             Mygenerosity.method("静态方法");
        }
    }
    
    
    class Tool
    {
        @Override
        public int hashCode()
        {
            // TODO Auto-generated method stub
            return 88;
        }
    }
    /**
     * 自己定义一个泛型
     * @param <ZZ>
     */
    class Mygenerosity<ZZ>
    {
        private ZZ zz;
        
        public void setObject(ZZ zz)
        {
            this.zz = zz;
        }
        public ZZ getObject()
        {
            return this.zz;        
        }
        
        public static <M> void method(M mm)
        {
            System.err.println("泛型的静态方法");
        }
        //泛型方法
        public <T> void Show(T t)
        {
            System.out.println("Shwo:泛型方法"+t);
        }
        public <Q> void print(Q q)
        {
            System.out.println("print:泛型方法"+q);
        }
        
    }
  • 相关阅读:
    手机兼容性测试
    Monkey测试
    ADB常用指令
    ADB移动端测试
    关于虚拟网卡V1,V8的问题
    1
    排序算法
    查找算法
    二叉树的计算
    队列
  • 原文地址:https://www.cnblogs.com/ganwei/p/4562277.html
Copyright © 2011-2022 走看看