java学习基础知识八——泛型

一、为什么要有泛型Generic
1、泛型Generic:


2、java中的泛型只在编译阶段有效,不会进入到运行阶段。

二、泛型类

/**
 * 此处的泛型T可以任意的取名
 * 一般使用T,意为type
 * @author 小虞哥哥
 *
 * @param <T>
 */
class A<T>{
    private T key;
    
    public void setKey(T key){
        this.key=key;
    }
    
    public T getKey(){
        return this.key;
    }
}

        //泛型类
       A<String> a=new A<String>();    //在new A的对象指定泛型的类型String
       a.setKey("张三");    //对象使用setKey(T key)方法中的key形参就是String
        String strA=a.getKey();        //T getKey(),返回值就有new对象确定返回值是String
        System.out.println(strA);
        
        A<Integer> a2=new A<Integer>();
        a2.setKey(1);
        int i=a2.getKey();
        System.out.println(i);

三、泛型接口

//定义一个泛型接口
inteface Generator<T>{
    T next();
}

四、通配符
1、格式:

//不确定集合中的元素具体的数据类型,使用?表示所有类型
public void test(List<?>list){
    System.out.println(list);
}

2、举例:
  →<? extends Person> (无穷小,Person]
    只允许泛型未Person及Person子类的引用调用
  →<? super Person> [Person,无穷大)
    只允许泛型未Person及Person父类的引用调用
  →<? extends Comparable>
    只允许泛型未实现 Comparable接口的实现类的引用调用

五、枚举类
1、手动实现枚举类:
  private 修饰构造器
  属性使用private final修饰
  把该类的所有实例都使用public static final来修饰
2、枚举类和普通类的区别:
  →使用enum定义的枚举类默认继承了java.lang.Enum类
  →枚举类的构造器只能使用private访问控制符
  →枚举类的所有实例必须在枚举类中显示列出(,分隔 ;结尾)
3、实现接口的枚举类
  →和普通java类一样,枚举类可以实现一个或多个接口
  →若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式,则可以让每个枚举值分别实现该方法
4、枚举类的方法:

六、注解——基本的Annotation
1、使用Annotation时要在其前加@符号,并把该Annotation当成一个修饰符使用。用于修饰它支持的程序元素
2、三个基本的Annotation:
  →@Override:限定重写父类方法,该注释只能用于方法
  →@Deprecated:用于表示某个程序元素(类,方法等)已过时
  →@SuppressWarnings:抑制编译器警告
3、自定义Annotation
  →定义新的Annotation类型使用@interface关键字
  →Annotation的成员变量在Annotation定义中以无参数方法的形式来声明。其方法名和返回值定义了该成员的名字和类型。
  

原文地址:https://www.cnblogs.com/MeiToufu/p/14342279.html