• Java 泛型


    来源:http://baike.baidu.com/link?url=nXfTH6Log7krzlrfSGuDIj9zQ8w577ONlt3WtKQrZtlxFYflqTlm2V9C-SpuQk3-WV8PcOJOwvOySqB8Cf9wuyt2LguYBZnABIaEDlcbJKK

    泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

     Java语言引入泛型的好处是安全简单。

    规则限制

    1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
    2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
    3、泛型的类型参数可以有多个。
    4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上称为“有界类型”。
    5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName("java.lang.String");
     
    下面的泛型类在使用时将其具体化。
    class Gen<T> {
        private T ob; // 定义泛型成员变量
     
        public Gen(T ob) {
            this.ob = ob;
        }
     
        public T getOb() {
            return ob;
        }
     
        public void setOb(T ob) {
            this.ob = ob;
        }
     
        public void showType() {
            System.out.println("T的实际类型是: " + ob.getClass().getName());
        }
    }
     
    public class GenDemo {
        public static void main(String[] args) {
            // 定义泛型类Gen的一个Integer版本
            Gen<Integer> intOb = new Gen<Integer>(88);
            intOb.showType();
            int i = intOb.getOb();
            System.out.println("value= " + i);
            System.out.println("----------------------------------");
            // 定义泛型类Gen的一个String版本
            Gen<String> strOb = new Gen<String>("Hello Gen!");
            strOb.showType();
            String s = strOb.getOb();
            System.out.println("value= " + s);
        }
    }

    泛型方法

    是否拥有泛型方法,与其所在的类是否泛型没有关系。要定义泛型方法,只需将泛型参数列表置于返回值前。如:

    public class ExampleA {
        public <T> void f(T x) {
            System.out.println(x.getClass().getName());
        }
     
        public static void main(String[] args) {
            ExampleA ea = new ExampleA();
            ea.f(" ");
            ea.f(10);
            ea.f('a');
            ea.f(ea);
        }
    }
    使用泛型方法时,不必指明参数类型,编译器会自己找出具体的类型。泛型方法除了定义不同,调用就像普通方法一样。
    需要注意,一个static方法,无法访问泛型类的类型参数,所以,若要static方法需要使用泛型能力,必须使其成为泛型方法。
     
     
     
     

    继承中使用

  • 相关阅读:
    [OC] UITabBarController
    ARC forbids explicit message send of release
    ios opensource YiYuanGou
    js添加创建节点和合并节点
    js数组反转
    JQuery中$.ajax()方法参数详解
    js按钮点击展开收起
    window.location.hash属性介绍
    js获取节点
    查询网址字符串参数用数组输出
  • 原文地址:https://www.cnblogs.com/limingxian537423/p/7064260.html
Copyright © 2020-2023  润新知