zoukankan      html  css  js  c++  java
  • 廖雪峰Java4反射与泛型-3范型-3编写泛型

    编写泛型类比普通的类要麻烦,而且很少编写泛型类。

    1.编写一个泛型类:

    • 按照某种类型(例如String)编写类
    • 标记所有的特定类型例如String
    • 把特定类型替换为T,并申明

      Pair.java
    package com.testArray;
    
    public class Pair<T> {
        private T fisrt;
        private T last;
        public Pair(T first,T last){
            this.fisrt=first;
            this.last=last;
        }
        public T getFisrt(){
            return fisrt;
        }
        public T getLast(){
            return last;
        }
    }
    

    Main.java

    package com.testArray;
    
    import java.util.ArrayList;
    
    public class Main {
        public static void main(String[] args){
            Pair<String> p = new Pair<String>("小明", "小红");
            String first = p.getFisrt();
            String last = p.getLast();
            System.out.println(first+"	"+last);
            System.out.println(p.getClass() == Pair.class);
        }
    }
    
    
    ## 2.泛型类包含静态方法 注意: 泛型类型不能用于静态方法: * 编译错误 * 编译器无法在静态字段或静态方法中使用泛型类型 * 静态方法可以单独改写为泛型方法 网上有种解决方法,在static后面加上,就解决了报错问题。但此处static方法中的和上面Pair类中的不一样,为了避免混淆,应该将替换为。 ```#java public static Pair create(T first,T last){ return new Pair(first,last); } ``` ```#java package com.testArray;

    public class Pair {
    private T fisrt;
    private T last;
    public Pair(T first,T last){
    this.fisrt=first;
    this.last=last;
    }
    public T getFisrt(){
    return fisrt;
    }
    public T getLast(){
    return last;
    }
    static Pair create(K first,K last){
    return new Pair(first,last);
    }
    }

    ```#java
    package com.testArray;
    
    public class Main {
        public static void main(String[] args){
            Pair<String> p = Pair.create("小明", "小红");
            String first = p.getFisrt();
            String last = p.getLast();
            System.out.println(first+"	"+last);
            System.out.println(p.getClass() == Pair.class);
        }
    }
    

    3.泛型可以定义多种类型

    Pair.java

    package com.testArray;
    
    public class Pair<T,K> {
        private T fisrt;
        private K last;
        public Pair(T first,K last){
            this.fisrt=first;
            this.last=last;
        }
        public T getFisrt(){
            return fisrt;
        }
        public K getLast(){
            return last;
        }
    }
    

    Main.java

    package com.testArray;
    
    public class Main {
        public static void main(String[] args){
            Pair<String,Integer> p = new Pair<String,Integer>("小明", 12);
            String first = p.getFisrt();
            Integer last = p.getLast();
            System.out.println(first+"	"+last);
            System.out.println(p.getClass() == Pair.class);
        }
    }
    

    4.总结:

    • 编写泛型时,需要定义泛型类型
      * public class Pair{...}
    • 静态方法不能引用泛型类型,必须定义其他类型来实现范型
      * public static Pair create(K first, K last){...}
    • 泛型可以同时定义多种类型<T,K>
      * public class Pair<T,K>{...}
  • 相关阅读:
    springmvc文件上传 并读取excel文件基本写法 多文件时参数为 @RequestParam MultipartFile[] myfiles 单文件时直接传File
    谷歌浏览器 js调试方法
    jxl实现文件导入页面例子
    angularjs实现上传文件动态显示文件列表
    文件上传 多个文件上传与单个文件上传
    angularjs实现动态表格的删除与增加
    2017songyunxin
    百万数据导出
    OutProductController
    DownloadUtil
  • 原文地址:https://www.cnblogs.com/csj2018/p/10426376.html
Copyright © 2011-2022 走看看