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

    泛型自J2SE 1.5引入。

    编译环境sun jdk 1.6

    class Generic<T>{
            T obj;
            public Generic(T obj){
                    this.obj = obj;
            }
            public T getObj(){
                    return this.obj;
            }
    }

    执行'javac Generic.java',产生class文件Generic.class。

    执行'javap -classpath xxx Generic'打印出反编译信息:

    a@ubuntu:javap -classpath ~/temp Generic
    Compiled from "Generic.java"
    class Generic extends java.lang.Object{
        java.lang.Object obj;
        public Generic(java.lang.Object);
        public java.lang.Object getObj();
    }

    泛型被编译为字节码后,被Object类型替代。这就是java泛型使用的类型“擦除”机制,目的是为了保持对jdk1.5之前的兼容性。

    有界类型:

    //###########extends###########
    a@h:~/temp$ cat GenericExtends.java 
    class GenericExtends<T extends Number>{
            T obj;
            public GenericExtends(T obj){
                    this.obj = obj;
            }
            public T getObj(){
                    return this.obj;
            }
    }
    
    a@h:~/temp$ javap -classpath ~/temp GenericExtends
    Compiled from "GenericExtends.java"
    class GenericExtends extends java.lang.Object{
        java.lang.Number obj;
        public GenericExtends(java.lang.Number);
        public java.lang.Number getObj();
    }
    
    //###########super###########
    a@h:~/temp$ cat GenericSuper.java 
    import java.util.List;
    
    class GenericSuper{
            private List<? super Double> list;
            public GenericSuper(){ }
            public void setList(List<? super Double> list){
                    this.list = list;
            }
    }
    
    a@h:~/temp$ javap -private -classpath ~/temp GenericSuper
    Compiled from "GenericSuper.java"
    class GenericSuper extends java.lang.Object{
        private java.util.List list;
        public GenericSuper();
        public void setList(java.util.List);
    }
  • 相关阅读:
    s3fs 挂载minio为本地文件系统
    P5787 线段树分治
    P5494 线段树分裂
    P1552 [APIO2012]派遣
    CF600E Lomsat gelral(线段树合并)
    P5283 异或粽子
    P4735 最大异或和(可持久化 trie)
    P3960 列队
    bzoj4316 小C的独立集
    P5021 赛道修建
  • 原文地址:https://www.cnblogs.com/tao_/p/3115068.html
Copyright © 2011-2022 走看看