其他分享
首页 > 其他分享> > 20220801_第七小组_张红睿_学习笔记

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

作者:互联网

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 要求:

1.6 泛型上下边界

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