教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 java学习笔记之泛型用法

java学习笔记之泛型用法

发布时间:2017-12-02   编辑:jiaochengji.com
教程集为您提供java学习笔记之泛型用法等资源,欢迎您收藏本站,我们将为您提供最新的java学习笔记之泛型用法资源
泛型:jdk1.5版本以后出现的新特性,用于解决安全问题,是一个类安全机制。

泛型:jdk1.5版本以后出现的新特性,用于解决安全问题,是一个类安全机制。
好处:
   1.将运行期间出现问题呢classCastException,转移到来了编译时期,方便程序员解决问题。让运行事情问题减少,安全。
   2.避免出现强制转换麻烦。
泛型格式:通过<>来定义要操作的引用类型。
使用情况:
 通常在定义框架中很常见,只要见到<>就要定义型,<>用来修饰类型。
  当使用类型时,将集合中要存储的数据类型当做参数传递到<>即可。

泛型类:定义在类上
     当类中需要操作的引用数据类型不确定的时候,早期定义Object来完成扩展,现在定义泛型类来完成扩展

 

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy4440')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy4440>

package com.day14.wd;
//早期没有泛型时,可以抽取方法,进行定义
class  Teacher{
}
class  worker{
   
}
class Tool{
    private Object obj;
    public void setObject(Object obj){
       
        this.obj=obj;
    }
    public Object getObject(){
        return obj;
    }
}
//泛型后:
class  Utils<QQ>{
    private QQ q;
    public void setObject(QQ q){
        this.q=q;
    }
    public QQ getObject(){
      return q;
    }
   
}
public class GenericDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         Tool tt=new Tool();
        tt.setObject(new worker());
        worker w=(worker) tt.getObject();
      

    
        Utils<Teacher> tc=new Utils<Teacher>();
        tc.setObject(new Teacher());//设置对象
        Teacher tr=tc.getObject(); //得到对象
    }

}/*
  泛型类定义的泛型,在整个类中有效。泛型类的对象明确要操作的具体类型后,所有的操作的类型固定。
  为了让不同的方法可以操作不同的类型,而且类型还不确定,那么可以将泛型定义在方法上。
*/


package com.day14.wd;

class Util{
    public<T> void show(T t){
        System.out.println("show:" t);
       
    };
    public<T> void  print(T t){
        System.out.println("show:" t);
       
    };
}
public class GenericDemo2 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
   Util dd=new Util();
   dd.show(new String("我要成功"));
   dd.show(new Integer(232));
   dd.print(new String("我一定要成功"));
  
    }

}//

特殊之处:静态方法不可以访问类上定义的泛型。如果,静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。定义在

修饰符和返回符之间 public static <T> void print(T t){};

-------------------?通配符-------------------
?通配符,可以理解为占位符
? extends E:可以接受E类型或者E的子类型,上限。
?  super E:可以接受E类型或者E的父类,下限

您可能感兴趣的文章:
java学习笔记之泛型用法
C#泛型:泛型特点、泛型继承、泛型接口、泛型委托学习笔记
C#泛型学习笔记
Struts 学习笔记之Action
学习笔记之JAVA图形设计卷I AWT——第3章 图 形
详解C#泛型及其特点
Java 和 C/C 中的char 类型长度学习笔记
Java入门笔记1_HelloWorld
转-如何学习java
学习golang开始前的准备工作

[关闭]
~ ~