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

    1. 概述

    所谓“泛型”,就是“宽泛的数据类型”,任意的数据类型。
    在引入范型之前,Java类型分为原始类型、复杂类型,其中复杂类型分为数组和类。引入范型后,一个复杂类型
    就可以在细分成更多的类型。
    例如原先的类型List,现在在细分成List<Object>, List<String>等更多的类型。
    注意,现在List<Object>, List<String>是两种不同的类型,
    他们之间没有继承关系,即使String继承了Object。下面的代码是非法的
        List<String> ls = new ArrayList<String>();
        List<Object> lo = ls;
    这样设计的原因在于,根据lo的声明,编译器允许你向lo中添加任意对象(例如Integer),但是此对象是
    List<String>,破坏了数据类型的完整性。
    在引入范型之前,要在类中的方法支持多个数据类型,就需要对方法进行重载,在引入范型后,可以解决此问题
    (多态),更进一步可以定义多个参数以及返回值之间的关系。
    例如
    public void write(Integer i, Integer[] ia);
    public void write(Double  d, Double[] da);
    的范型版本为
    public <T> void write(T t, T[] ta);

    public class Demo {
        public static void main(String[] args){
            // 实例化泛型类
            Point<Integer, Integer> p1 = new Point<Integer, Integer>();
            p1.setX(10);
            p1.setY(20);
            int x = p1.getX();
            int y = p1.getY();
            System.out.println("This point is:" + x + ", " + y);
           
            Point<Double, String> p2 = new Point<Double, String>();
            p2.setX(25.4);
            p2.setY("东京180度");
            double m = p2.getX();
            String n = p2.getY();
            System.out.println("This point is:" + m + ", " + n);
        }
    }

    // 定义泛型类
    class Point<T1, T2>{
        T1 x;
        T2 y;
        public T1 getX() {
            return x;
        }
        public void setX(T1 x) {
            this.x = x;
        }
        public T2 getY() {
            return y;
        }
        public void setY(T2 y) {
            this.y = y;
        }
    // 定义泛型方法

    public <T1, T2> void printPoint(T1 x, T2 y){

    T1 m = x;

    T2 n = y;

    System.out.println("This point is:" + m + ", " + n);

    }

    }

  • 相关阅读:
    lintcode42- Maximum Subarray II- medium
    leetcode53- Maximum Subarray- easy
    leetcode50- Pow(x, n)- medium
    leetcode23- Merge k Sorted Lists- hard
    leetcode21- Merge Two Sorted Lists- easy
    lintcode121- Word Ladder II- hard
    lintcode107- Word Break- medium
    lintcode10- Permutation Index II- medium
    AM335x关于LCD屏幕的时钟PLL配置 分类: TI-AM335X 2015-06-16 18:32 341人阅读 评论(0) 收藏
    用DriverStudio开发USB驱动程序 分类: USB OTG驱动 2015-06-12 10:34 376人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/cayman/p/5518458.html
Copyright © 2011-2022 走看看