码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员-泛型

时间:2015-06-09 00:48:06      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

出现原因:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个安全机制

  • 好处:

1.将运行时出现的ClassCastException,转移到了编译时期,就是为了方便我们解决问题,让程序运行时出现的问题减少,

2.重要的是:避免的强制类型转换的麻烦

  • 泛型的格式   (通常在集合框架里面用得比较多一点)

用一个<>当中包含一个我们指定的数据类。如ArrayList<String>

<>就是用来接收数据类型,就类比函数传参数,

注意:只能传递引用数据类型

java用到的泛型对象我们可以到API文档中具体查看;

  • 什么时候定义泛型呢?

当我们类当中我们要操作的数据类型不确定的时候。

早期我们定义一个Object来完成扩展

现在定义泛型来扩展

  • 泛型类定义的泛型,在整个类中就有效,如果类当中的方法被调用,那么泛型类被定义

明确要操作的对象以后,那么我们所要操作的类型也就固定了。如何解决这个问题呢?

答:为了让不同的方法可以操纵不同的类型,而去我们的类型还不确定,那么我们可以把泛型定义咋

方法上面,

 

public <T> void Show(T tt);//泛型方法的定义方式

public static <T> void method( M mm); //泛型的静态方法

特殊之处:静态方法不可以访问类上定义的泛型,

  • Java能够定义泛型类。我们能不能自己定义呢?
package com.text;

public class zhulang
{

    /**
     *自己定义的泛型类。
     * @param args
     */
    public static void main(String[] args)
    {
        //泛型类明确了存储的内容只能在里面存储不同的对象
        Mygenerosity<Tool> my = new Mygenerosity<Tool>();
        
        my.setObject(new Tool());
        Tool t = (Tool)my.getObject();
        
        //调用泛型方法
         my.Show("泛型方法");
        //调用静态的方法
         Mygenerosity.method("静态方法");
    }
}


class Tool
{
    @Override
    public int hashCode()
    {
        // TODO Auto-generated method stub
        return 88;
    }
}
/**
 * 自己定义一个泛型
 * @param <ZZ>
 */
class Mygenerosity<ZZ>
{
    private ZZ zz;
    
    public void setObject(ZZ zz)
    {
        this.zz = zz;
    }
    public ZZ getObject()
    {
        return this.zz;        
    }
    
    public static <M> void method(M mm)
    {
        System.err.println("泛型的静态方法");
    }
    //泛型方法
    public <T> void Show(T t)
    {
        System.out.println("Shwo:泛型方法"+t);
    }
    public <Q> void print(Q q)
    {
        System.out.println("print:泛型方法"+q);
    }
    
}

黑马程序员-泛型

标签:

原文地址:http://www.cnblogs.com/ganwei/p/4562277.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!