【Java基础】泛型记录概要

泛型记录概要


泛型出现重要原因之一:创造容器类

泛型主要目的之一:指定容器持有什么类型的对象,保证编译的正确性

泛型简单实例

class GenericsClass{
  private T property;
  public GenericsClass(T property){}
}

元组(tuple)

基本概念

又称数据传送对象或者信使。将一组对象直接打包存储于其中的一个单一对象,只允许往这个对象读取其中元素,但是不允许向其中存放新的对象

目的

解决仅一次方法调用返回多个对象

特性

  • 具有任意长度
  • 存在不同类型的对象

简单二维元组

class TwoTuple{
   public final L left;
   public final R right;
   public TwoTuple(L left,R right){
         this.left = left;
         this.right = right;
   }
   public String toString(){
       return "(" + left + "," + right + ")";
   }
}

通过继承机制创建长度更长的元组

class ThreeTuple extends TwoTuple{
   public final M middle;
   public TwoTuple(L left,M middle,R right){
         super(left,right);
         this.middle = middle;
   }
   public String toString(){
       return "(" + left + "," + middle + "," + right + ")";
   }
}

使用元组

static TwoTuple getTuple(){
   return new TwoTuple("key","value");
}

public static void main(String[] args) {
   TwoTuple tuple = getTuple();
   System.out.println(tuple);       
}

泛型接口

生成器(Generator)就是典型的泛型接口应用,用来负责创建对象

生成器(Generator)和工厂模式(FactoryPattern)都是负责创建对象的,两者的区别在于前者不需要传递任何参数信息,后者则需要。

基本类型无法作为类型参数。Java提供的自动打包/拆箱机制转换

泛型方法

泛型方法可以独立于类发生变化

Class GenericClass{
      public  void genericMethod(T x){
           //x.getClass().getName()
      }
}

类型参数推断:使用泛型方法不需要指明参数类型,编译器会找出具体类型

杠杆利用类型参数推断

new HashMap>()

 Map

 List

类型参数推断避免了重复的泛型参数列表

泛型用于匿名内部类

泛型的好处之一是简单而安全的创建复杂模型

在泛型内部,无法获得任何有关泛型参数类型的信息

你可能感兴趣的:(Java核心基础,java,泛型)