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);
    }
  • 相关阅读:
    vue2 下载scss依赖包
    fastjson使用
    vscode format
    flutter 中涉的深拷贝
    通过pom给maven添加编译插件
    IDEA添加动态模板(Live Templates)
    Maven启动tomcat:run异常
    Redis
    tomcat启动时启动窗口出现乱码的解决方案
    无效的源发行版,解决方案
  • 原文地址:https://www.cnblogs.com/tao_/p/3115068.html
Copyright © 2011-2022 走看看