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

    1  泛型类的定义格式:

      class 类名<声明自定义泛型>{

      }

    示例:

     1 //需求: 编写一个数组 的工具类
     2 class MyArrays<T> {
     3     public void reverse(T[] arr) {
     4         for (int startIndex = 0, endIndex = arr.length - 1; startIndex < endIndex; startIndex++, endIndex--) {
     5             T temp = arr[startIndex];
     6             arr[startIndex] = arr[endIndex];
     7             arr[endIndex] = temp;
     8         }
     9     }
    10 
    11     public String toString(T[] arr) {
    12         StringBuilder sb = new StringBuilder();
    13         for (int i = 0; i < arr.length; i++) {
    14             if (i == 0) {
    15                 sb.append("[" + arr[i] + ",");
    16             } else if (i == arr.length - 1) {
    17                 sb.append(arr[i] + "]");
    18             } else {
    19                 sb.append(arr[i] + ",");
    20             }
    21         }
    22         return sb.toString();
    23     }
    24 }
    25 
    26 public class Demo2 {
    27     public static void main(String[] args) {
    28         Integer[] arr = { 1, 2, 3, 4 };
    29         MyArrays<Integer> tool = new MyArrays();
    30         tool.reverse(arr);
    31         System.out.println("数组的元素为: " + tool.toString(arr));
    32 
    33         String[] arr2 = { "aaa", "bbb", "ccc" };
    34         MyArrays<String> tool2 = new MyArrays();
    35         tool2.reverse(arr2);
    36         System.out.println("数组的元素为: " + tool2.toString(arr2));
    37     }
    38 
    39 }

    2  泛型类要注意的事项:

      A.  在类上自定义泛型的具体数据类型是在使用该类的时候创建对象时候确定的。

      B.  如果一个类在类上已经声明了自定义泛型,如果使用该类创建对象的时候没有指定泛型的具体数据类型,那么默认为Object类型

        例如:

        

        那么

        

      C.  在类上自定义泛型不能作用于静态的方法,如果静态的方法需要使用自定义泛型,那么需要在方法上自己声明使用。

          原因:非静态方法是在创建对象后才能调用的;静态方法不一定需要通过创建对象来调用。

             而泛型的具体数据类型是在使用该类创建对象时候才确定的。

        例如:

        

        

       D.   此时,静态方法上声明的<T>与类上声明的<T>不会冲突,因为此方法具体数据类型是在调用该方法的时候传入实参时才确定具体的数据类型的。

           

  • 相关阅读:
    php通过curl发送XML数据,并获取XML数据
    js预编译环节 变量声明提升 函数声明整体提升
    JavaScript 字符串转json格式
    PHP保留两位小数的几种方法
    tp5.1 错误 No input file specified.
    frame与iframe的区别及基本用法
    iframe的用法
    Jquery DataTable基本使用
    松软科技课堂:SQL--FULLJOIN关键字
    松软科技课堂:SQL-LEFT-JOIN 关键字
  • 原文地址:https://www.cnblogs.com/shadowdoor/p/6817489.html
Copyright © 2011-2022 走看看