zoukankan      html  css  js  c++  java
  • Java 之 泛型擦除

    泛型擦除

      在严格的泛型代码里,带泛型声明的类总应该带着类型参数。但为了与老的 Java 代码保持一致,也允许在使用带泛型声明的类时不指定类型参数。如果没有为这个泛型类指定泛型参数,则该类型参数被称作一个原始类型(raw Type)。

      如果在使用泛型类或泛型接口的时候,没有指定泛型实参,会怎么样?(泛型擦除现象,泛型擦除后,泛型形参被解析为什么类型呢?)

      (1)如果没有指定泛型形参的上限,就按照 Object 处理;

      (2)如果指定泛型形参的上限,就按照上限处理,如果有多个上限,多个上限用&连接,按照最左边的第一个上限处理。

      Demo:

     1 public class TestErase {
     2     public static void main(String[] args) {
     3         //ArrayList<String>被转换为了ArrayList
     4         ArrayList list = new ArrayList<String>();
     5         list.add("Hello");
     6         list.add("World");
     7         //泛型被擦除,按照默认上限Object处理
     8         Object object = list.get(1);
     9         
    10         Student s = new Student("张三",12);
    11         
    12         //泛型被擦除,按照第一个上限Number处理
    13         Number score = s.getScore();
    14     }
    15 }
    16 class Student<T extends Number & java.io.Serializable>{
    17     private String name;
    18     private T score;
    19     public Student(String name, T score) {
    20         super();
    21         this.name = name;
    22         this.score = score;
    23     }
    24     public T getScore() {
    25         return score;
    26     }
    27 }
  • 相关阅读:
    [CF786B] Legacy
    [CF833B] The Bakery
    [JSOI2008] 最小生成树计数
    [SDOI2010] 外星千足虫
    [POJ1830] 开关问题
    [Luogu1365] WJMZBMR打osu! / Easy
    [Noip2016] 换教室
    [NOI2002] 荒岛野人
    [计蒜之道复赛 2018] 贝壳找房计数比赛
    [SDOI2014] 旅行
  • 原文地址:https://www.cnblogs.com/niujifei/p/12208188.html
Copyright © 2011-2022 走看看