码迷,mamicode.com
首页 > 编程语言 > 详细

Java泛型

时间:2015-08-26 01:54:39      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:泛型

纸上得来终觉浅,绝知此事要躬行  --陆游       问渠那得清如许,为有源头活水来  --朱熹

泛型是JDK1.5中最重要的特征,通过引入泛型,我们将获得编译时类型的安全和运行时更小的抛出ClassCastException的可能。泛型用的最多的地方是集合。
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
表面上看起来,无论语法还是应用的环境(比如容器类),泛型类型(或者泛型)都类似于 C++ 中的模板。但是这种相似性仅限于表面,Java 语言中的泛型基本上完全在编译器中实现,由编译器执行类型检查和类型推断,然后生成普通的非泛型的字节码。这种实现技术称为 擦除(erasure)(编译器使用泛型类型信息保证类型安全,然后在生成字节码之前将其清除),这项技术有一些奇怪,并且有时会带来一些令人迷惑的后果。虽然范型是 Java 类走向类型安全的一大步,但是在学习使用泛型的过程中几乎肯定会遇到头痛(有时候让人无法忍受)的问题。
(1)所谓泛型,就是变量类型的参数化
(2)尖括号中包含的时形式类型参数,当类被使用时再使用具体的类型参数
(3)不能用new来创建泛型数组,实现的方式是object []  test
(4)继承泛型类和实现泛型接口时,需要带有原来的类型

Java泛型类的示例:
public class Test<T>
{
    //T作为数据类型
}
在实例化该类时,必须指明泛型T的具体类型,例如:Test<Object> t = new Test<Object>();,指明泛型T的类型为Object。

最简单的泛型类示例:
public class GenericTest {

    public static void main(String[] args) {

        Box<String> name = new Box<String>("corn");
        System.out.println("name:" + name.getData());
        Box<Integer> number=new Box<Integer>(20);
        System.out.println("number:"+number.getData());
    }

}
class Box<T>   //引入一个类型变量T,用<>括起来,并放在类名的后面,同时泛型类可以有多个类型变量。
{
    private T data;
    public Box() {

    }
    public Box(T data) {
        this.data = data;
    }
    public T getData() {
        return data;
    }
} 
泛型接口的示例:
interface Show<T,U>{
    void show(T t,U u);
}

class ShowTest implements Show<String,Date>{
    @Override
    public void show(String str,Date date) {
        System.out.println(str);
        System.out.println(date);
    }
}
泛型方法的示例:
public static void main(String[] args) throws ClassNotFoundException {
    String str=get("Hello", "World");
    System.out.println(str);
}

public static <T, U> T get(T t, U u) {
    if (u != null)
        return t;
    else
        return null;
}  

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java泛型

标签:泛型

原文地址:http://blog.csdn.net/qq924862077/article/details/47989817

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