zoukankan      html  css  js  c++  java
  • JAVA泛型

    泛型不能使用基本类型

    Pair<double> //Error

    Pair<Double> // Right

    运行时类型查询只适用于原始类型

    虚拟机中的对象总有一个特定的非泛型类型。 因此, 所有的类型查询只产生原始类型。

    if (a instanceof Pair<String>) // Error

    if (a instanceof Pair<T>) // Error

    Pair<String> p = (Pair<String>) a; // Warning-can only test that a is a Pair

    Pair<String> stringPair = . .
    Pair<Employee> employeePair = . .
    if (stringPair.getClassO == employeePair.getClassO) // they are equal

     

    不能创建参数化类型的数组

    虚拟机在创建参数化类型数组时会擦除泛型

    Pair<String>[] table = new Pair<String>[10]; // Error

    Pair<String>[] table = (Pair<String>[]) new Pair<?>[10]; //不安全

    ArrayList<Pair<String>> //推荐

    Varargs 警告

    在声明具有模糊类型(比如:泛型)的可变参数的构造函数或方法时,Java编译器会报unchecked警告。鉴于这些情况,如果程序员断定声明的构造函数和方法的主体不会对其varargs参数执行潜在的不安全的操作,可使用@SafeVarargs进行标记,这样的话,Java编译器就不会报unchecked警告。

    @SuppressWamings("unchecked") 也可以排除警告

    不能实例化类型变量

    public Pair() { first = new T(); second = new T(); } // Error

    官方文档给出一些实例化方案,不过我并没有看懂。 //TODO

    不能构造泛型数组

    public static <T extends Comparable〉T[] minmax(T[] a) { T[] = new T[2]; . . . } // Error

  • 相关阅读:
    Metro-UI系统-1-tile标签
    linux 修改文件最大数
    linux 利用cat写入一段文件
    linux for 循环的小应用
    办公区公网Ip访问不到阿里云ECS
    Django 构建一个项目
    Django 基础篇
    iptables 生产环境下基础设置
    centos7 部署LNMP
    查看sqlserver被锁的表以及如何解锁
  • 原文地址:https://www.cnblogs.com/ic710/p/11411178.html
Copyright © 2011-2022 走看看