• 2022-08-01 田龙跃 学习笔记


    泛型

    类型擦除:(编译角度)泛型在编译后全按object类型处理(就是让程序员编写代码是遵守的“规则”:创建对象时建立了规则,以后使用我这个对象时必须遵守我的规则(编码角度))
    泛型;标记类型(T-类型 K-key V-value E-element元素 ?-通配符) “暂时不确定是什么类型,用的时候再确认”(类型参数化-你把想要的类型作为参数传给我确定类型)
    泛型类/接口:类名 在整个“类”中都可以使用,可以在使用这个类的时候指定类型然后类中所有的使用T类型的方法
    泛型方法:返回值和参数列表,写返回值之前定义泛型<>("声明泛型"),必须配合传参(传的参数是啥类型,泛型就是啥类型)----前提 必须要有泛型声明和返回值;必须要有参数。(泛型方法多数放在非泛型类中)
    泛型与继承:
    1.父类是泛型类,子类不一定是
    2.泛型的声明在类名之后或者在方法名中间
    3.父类跟随子类确定泛型的类型
    4.在继承后,子类不是泛型类,继承的东西(方法,属性)就是object类型
    5.静态泛型方法必须直接声明泛型
    适用场景(当类型无法确定时使用)
    1.父类(接口中):定义规则,没有明确要求(由子类确定)
    2.容器类:存储的数据类型由使用者确定

    点击查看泛型基本使用
    public interface List <T>{
    
    //     static T [] arrays;//创建对象时才可以确定T所以T无法被静态使用(接口中默认静态常量)
    
        void add(T data);
    
        void add(Integer index,T data);//泛型作为参数
    
        T get(int index);//泛型作为返回值
    
        void change(Integer index,T data);
    
        void delete();
    
        void delete(Integer index);
    }
    
    
    点击查看泛型实现类
    public class SuperArray<T> implements List<T>{//泛型无法创建对象,所以还是要维护Object类型
      //    父类类型由子类确定
        // 维护一个数组,要考虑的是怎么存
        private Object [] array;
    
    点击查看指定类型和泛型方法
     SuperArray<Employee> superArray=new SuperArray<>();//创建对象时指定类型
    
     public  T getObj(T t){//一定要声明返回值类型为泛型才能叫“泛型”方法
            return t; 
        }
    
    ##枚举类:(类名要以Enum结尾) 1.把需要用到的对象声明出来 -对象名(构造参数) 2.可以有set和get方法 3.可以有构造器(私有) 枚举的静态导入(不用类名.了) import static 全类名.*/枚举对象
    点击查看枚举实现单例(内部枚举)
    public class Singleton {
        //声明私有化类对象
        private static Singleton singleton;
    //    私有化构造函数
        private Singleton(){}
    //    提供一个对外的获取单例的方法
        public static Singleton getInstance(){
             singleton = SingletonHolder.SINGLETON_HOLDER.getSingleton();
            return singleton;
        }
    
    //    内部枚举
        private enum SingletonHolder{
    
            SINGLETON_HOLDER;
    //        定义枚举的属性
        private final Singleton singleton;
    //    定义枚举的构造方法进行初始化
        SingletonHolder(){
            singleton= new Singleton();
        }
    //提过一个获取singleton属性的方法
        public Singleton getSingleton() {
            return singleton;
        }
    }
    //测试
        public static void main(String[] args) {
            Singleton singleton1=Singleton.getInstance();
            Singleton singleton2=Singleton.getInstance();
            System.out.println(singleton1==singleton2);
        }
    }
    
    
    ##进程:一个程序的运行过程
  • 相关阅读:
    mysql查看binlog内容,dump 恢复单表
    CPU的睿频、超线程、SIMD指令集等特性对密码算法性能的影响
    侦听器watch及其和计算属性、methods方法的总结
    AI趋势量化系统(Binance升级版)
    Rust-Sqlx极简教程
    Python医学数据分析入门,推荐你学习这本书
    采用PHP语言(医院安全不良事件上报系统源码)医院不良事件 各类事件分析、分类、处理流程
    在嵌入式设计中添加双向I2C数字隔离
    自学C++ day01
    《算法备案与数据安全:双重保障》
  • 原文地址:https://www.cnblogs.com/404tly/p/16541466.html