zoukankan      html  css  js  c++  java
  • java学习笔记之泛型

    “泛型”这个术语的意思就是:“使用与许多许多的类型”。泛型在编程语言中出现时,其最初的目的是希望类或方法能够具备最广泛的表达能力。如何做到这一点呢,正是通过解耦类或方法与所使用的类型之间的约束。
       在你创建参数化类型的一个实例时,编译器会为你负责转型操作并保证类型的正确性。看一个例子:
    public class Cat<T> {
    	 private T str;
    	      public Cat() {
    	  
    	      }
    	  
    	      public Cat(T str) {
    	          this.str = str;
    	     }
    	  
    	      public T getstr() {
    	          return str;
    	     }
    	      public static void main(String[] args) {
    	    	  Cat<String> name = new Cat<String>("corn");
    	    	  Cat<Integer> age = new Cat<Integer>(712);
    	    	  System.out.println("name class:" + name.getClass());      
    	    	  System.out.println("age class:" + age.getClass());        
    	    	  System.out.println(name.getClass() == age.getClass());   
    	    	
    		}
    }
    /*
    output:
    name class:class com.ys.Cat
    age class:class com.ys.Cat
    true
    */
    

      

    在使用泛型类时,虽然传入了不同的泛型实参,但并没有真正意义上生成不同的类型,传入不同泛型实参的泛型类在内存上只有一个,即还是原来的最基本的类型(本实例中为Cat),当然,在逻辑上我们可以理解成多个不同的泛型类型。

    在编译过程中,对于正确检验泛型结果后,会将泛型的相关信息输出,也就是说,成功编译过后的class文件中是不包含任何泛型信息的。泛型信息不会进入到运行时阶段。

    对此总结成一句话:泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型。

    好处就是我们不必一开始就指定具体的类型而在使用时再用实际的类型替换此类型的参数,这大大增加了代码的复用性。

  • 相关阅读:
    UML的相关基础知识
    easyui的datagrid、treegrid增加表头菜单,用于显示或隐藏列
    easyui datagrid load的时候,提交的时候多了name为数字的参数
    Easyui Dialog 设置初始位置
    投票系统的代码总结
    部门组织机构树的使用
    TCP连接客户端的方法
    播放M3U8的js代码
    JAVA的split的用法
    BOLB转word文件,和word文件转换BOLB
  • 原文地址:https://www.cnblogs.com/yansum/p/6085597.html
Copyright © 2011-2022 走看看