泛型汇总(一)

1、泛型指的是不确定类型的元素,泛型可以写到方法上面,也可以写到类上面;
如写到类上面的泛型;泛型可以继承固定类bean对象

public abstract class AbstractOrderFacade<TCreate extends IBaseOrderParams, TModify extends IModifyDraftOrderParams, TSubCreate extends AbstractCreateSalesOrderParam> {
......
}

2、泛型擦除
在泛型的使用过程中,有个现象需要特别注意一下,那就是泛型擦除,泛型仅存在于编译时,JVM中是不存在泛型的,我们可以将上述ArrayList.class文件进行反编译,可以通过jad反编译工具,也可以通过网上的在线工具均可哈。 反编译后源码:

//反编译后的代码
package com.javabuild.server.pojo;

import java.util.Arrays;

class Arraylist {

   private Object[] elementData;
   private int size = 0;


   public Arraylist(int initialCapacity) {
      this.elementData = new Object[initialCapacity];
   }

   public boolean add(Object e) {
      ++this.size;
      this.elementData[this.size] = e;
      return true;
   }

   Object elementData(int index) {
      return this.elementData[index];
   }

   public Object[] toArray(Object[] a) {
      return (Object[])Arrays.copyOf(this.elementData, this.size, a.getClass());
   }

   public static void printArray(Object[] inputArray) {
      Object[] var1 = inputArray;
      int var2 = inputArray.length;

      for(int var3 = 0; var3 < var2; ++var3) {
         Object element = var1[var3];
         System.out.printf("%s", new Object[]{element});
      }

   }
}

可以发现Java中的泛型均被Object替换,因为在JVM解析的过程中会进行泛型的擦除操作。

posted @ 2024-02-18 11:01  郭慕荣  阅读(7)  评论(0编辑  收藏  举报