ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

20220801_第七小组_张红睿_学习笔记

2022-08-02 16:05:13  阅读:132  来源: 互联网

标签:return 笔记 class 20220801 value key 泛型 张红睿 public


Java高级第一天

1. Java泛型

1.1定义

​ 泛型是J2 SE1.5中引入的一个新特性,本质是参数化类型,就是将类型由原来的具体的类型参数化,这种参数类型可以用在类、接口、方法中,分别称为泛型类、泛型接口、泛型方法。

1.2 泛型类

​ **语法:访问修饰符 (修饰符) class 类名 <泛型类型名称> (extends)(implements) **

public class Test<T>{}

1.3 泛型接口

​ **语法:访问修饰符 (修饰符) interface 接口名 <泛型类型名称> (extends)(implements) **

public interface Test<T>{}

1.4 泛型方法

语法:访问修饰符 (修饰符) <泛型名称> 泛型名称 函数名(泛型名称 泛型形参名称){ 函数体 }

public <T> T test(T t){ return t; }

1.5 要求:

  • 参数化类型T可以写成任意字符,常用的T、E、K、V等表示泛型。
  • 泛型不能是基本数据类型,基本类型要用其包装器。
  • 实例化泛型类型时,必须指定T的具体类型。
  • 泛型类在继承时,在确定子类泛型时,父类的泛型和子类一样。
  • 父类是一个泛型,子类可以不写泛型。
  • 泛型类中尽量不要使用泛型方法,泛型方法多数出现在非泛型类中。
  • 静态泛型方法的泛型声明必须写,因为静态结构属于类不属于某个对象。

1.6 泛型上下边界

  • 上限:<? extends BaseClass>
  • 下限:<? super ChildClass>

1.7 类型擦除

​ 泛型的代码只存在于编译阶段,在进入JVM之前,与泛型相关的信息会被擦除掉,我们称之为类型擦除。

1.7.1 无限制类型擦除

public class Erasure<T>{
    private T key;
    
    public T getKey(){
        return key;
    }
    
    public void setKey(T key){
        this.key = key;
    }
}

编译后:

public class Erasure<Object>{
    public Object key;
    
    public Object getKey(){
        return key;
    }
    
    public void setKey(Object key){
        this.key = key;
    }
}

1.7.2 有限制类型擦除

public class Erasure<T extends Number>{
    public T key;
    
    public T getKey(){
        return key;
    }
    
    public void setKey(T key){
        this.key = key;
    }
}

编译后:

public class Erasure{
    public Number key;
    
    public Number getKey(){
        return key;
    }
    
    public void setKey(Number key){
        this.key = key;
    }
}

1.7.3 桥接方法

public interface Info<T>{
    T info(T t);
}

public class InfoImpl implements Info<Integer>{
    @Override
    public Integer info(Integer value){
        return value;
    }
}

编译后:

public interface Info{
    Object info(Object t);
}

public class InfoImpl implements Info<Integer>{
    
    public Integer info(Integer value){
        return value;
    }
    
    // 桥接方法,保持接口和类的实现关系
    @Override
    public Object info(Object value){
        return info((Integer)value);
    }
}

2. 枚举

2.1 定义

​ 枚举(enumeration,enum)是一组常量的集合,属于一种特殊的类,枚举对象/属性都使用static + final 共同修饰。

​ 枚举对象名通常都使用大写,可有多个属性。

2.2 自定义实现四季枚举类

public enum Season{
    SPRING(1, "春天"),
    SUMMER(2, "夏天"),
    AUTUMN(3, "秋天"),
    WINNER(4, "冬天");
    
    private int value;
    private String name;
    
    Season(int value, String name){ // 固定默认为私有
        this.value = value;
        this.name = name;
    }
    
    public int getValue(){
        return value;
    }
    
    public String getName(){
        return name;
    }
}

2.3 枚举实现单例

public class Singleton{
    private Singleton(){}
    
    private enum SingletonHolder{
        INSTANCE;
        private final Singleton instance;
        SingletonHolder(){
            instance = new Singleton();
        }
    }
    
    public Singleton getInstance(){
        return SingletonHolder.INSTANCE.instance;
    }
}

标签:return,笔记,class,20220801,value,key,泛型,张红睿,public
来源: https://www.cnblogs.com/blog-J/p/16544065.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有