`
海王子1994
  • 浏览: 45214 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

泛型

阅读更多
  众所周知,Object类型为所有类的父亲,它的引用可以接受任何类型的对象。传统的List类的add方法也是以Object类型为参数,自然对应的get方法返回的也是Object类型。多数情况下,我们只是将一种类型添加到集合类(如List)中,取出数据时都只能为Object,必须经过转换才能变回自己,此时泛型的出现便很好地解决了这个问题。
   泛型在创建对象时使用<类型>声明类型,如:
List<String>list=new LinkedList<String>();此时List便只能接受String类型的对象。

取一例子说明泛型的用法:

public class Testing {

public List<String>getList(){
List<String>list=new LinkedList<String>();//创建泛型List类对象
list.add("one");//将"one"添加到list
list.add("two");//将"two"添加到list
        list.add("three");//将"three"添加到list
        return list;
   
}

 
  public static void main(String[] args)
  {
     Testing test=new Testing();//创建对象
              List<String>list=test.getList();//创建List类对象,接受test中的字符串
              String s=list.get(0);//将list中的字符串赋值给s
     System.out.println(s);//输出s
  }

}

使用泛型的好处不外乎两点:

其一:当添加一个元素时,编译器可以根据参数化类型判断该类型是否合法;若非法,则报错。

其二:当取出元素时,可以直接获得参数化指定类型,并非原始Object类。


*泛型的检测只是在编译期间,所以关于参数化类型的信息都是在编译期处理的;在运行期间,它们就会被擦除!

需要提醒的是,即使两个类的参数类型存在继承关系,也不能进行如下操作;

List<Number>list=new LinkedList<Number>();
List<Byte>list2=new LinkedList<Byte>();//不能这样操作
list=list2             //泛型的参数不能当作父类与子类那样使用。

除了系统本身有的泛型,我们可以自定义泛型使用,例子如下:

public class Testing<E> {
private List<E>list;
private final int size;
public Testing(int size)
{
    list=new ArrayList<E>();
    this.size=size;
}
public void add(E e)
{
if(list.size()<size)
{
     list.add(e);
     System.out.println("元素"+e+"添加成功!");

}
else{
      System.out.println("空间已满,无法再添加!");
}
}
public void remove(int index)
{
if(index>=list.size())
{
System.out.println("index过大!");
}
else{
E e=list.remove(index);
System.out.println("元素"+e+"已成功删除!");
}
}

 
  public static void main(String[] args)
  {
Testing<Integer>ab1=new Testing<Integer>(3);
ab1.add(1);
ab1.add(2);
ab1.add(3);
ab1.add(4);
ab1.remove(4);
ab1.remove(0);
//////////////////////////////////////////////////////////////////////////
Testing<String>ab2=new Testing<String>(4);
ab2.add("gold");
ab2.add("wood");
ab2.add("water");
ab2.add("fire");
ab2.add("earth");
ab2.remove(3);
  }


}
分享到:
评论

相关推荐

    C#泛型类、泛型方法、泛型接口、泛型委托的实例

    本文将深入探讨泛型类、泛型方法、泛型接口和泛型委托,并通过实例来阐述它们的应用。 首先,我们来看泛型类。泛型类是具有一个或多个类型参数的类。类型参数是在定义类时使用的占位符,实际的类型在创建类的实例时...

    泛型java的泛型知识,非常有用

    Java 泛型是一种强大的语言特性,自JDK 5.0引入以来,极大地提升了代码的类型安全性以及重用性。泛型允许我们在类、接口和方法中使用类型参数,这样在编译时期就能检查类型匹配,减少运行时类型转换异常。 1. **...

    泛型dao 泛型dao 泛型dao

    Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...

    Java泛型的用法及T.class的获取过程解析

    Java泛型的用法及T.class的获取过程解析 Java泛型是Java编程语言中的一种重要特性,它允许开发者在编写代码时指定类型参数,从而提高代码的灵活性和可读性。本文将详细介绍Java泛型的用法 及T.class的获取过程解析...

    关于java基础的泛型的练习

    Java泛型是Java SE 5.0引入的一个重要特性,它极大地增强了代码的类型安全性和可读性。泛型在编程中的应用广泛,特别是在集合框架中,使得我们可以在编译时就检查类型,避免了不必要的类型转换,并且提高了代码的...

    利用反射生成泛型类对象

    反射和泛型是一种重要的解决途径。 此代码是一个生成泛型对象的类。 比如: Pool&lt;Point&gt; pool = new Pool(){}; Point p = pool.get(x, y); //在此构造Point对象 ... pool.put(p); 希望能帮助那些为查找泛型构造器、...

    关于java的泛型.doc

    关于Java的泛型,这是Java 5.0版本引入的一项重大特性,旨在提供类型安全的集合操作,并增强代码的重用性和灵活性。泛型允许程序员在设计类或接口时使用类型参数,使得类或接口可以处理任何数据类型,而不必为每种...

    Java集合框架及泛型

    泛型则是Java在J2SE 5.0版本引入的一个特性,极大地提高了代码的类型安全性和可读性。下面我们将深入探讨这两个主题。 首先,集合框架包括接口(如List、Set和Queue)和实现这些接口的具体类(如ArrayList、...

    JAVA-泛型课件-泛型课件

    泛型是Java语言的一个重要特性,首次出现在Java SE 1.5版本中。它的引入主要是为了解决在集合操作中类型安全性的问题,并通过引入参数化类型的概念,提高了代码的复用性与可读性。 ### 泛型概念 泛型,即参数化...

    Webservice传递泛型的案例,包括web服务端和mobile端

    在这个特定的案例中,我们关注的是在Web服务(WebService)中如何处理泛型,以及如何在移动设备(mobile端)上与之交互。泛型是C#编程语言中的一个重要特性,它允许我们在代码中创建可重用的类型安全的数据结构,而...

    java 泛型类的类型识别示例

    在Java编程语言中,泛型(Generics)是一种强大的特性,它允许我们在编写代码时指定容器(如集合)可以存储的数据类型。这提高了代码的安全性和效率,因为编译器可以在编译时检查类型,避免了运行时...

    java 一个关于泛型的简单例子

    泛型是Java编程语言中的一个重要特性,它引入于JDK 5.0,极大地提高了代码的类型安全性和可读性。泛型允许我们在类、接口和方法中使用类型参数,这样我们可以在编译时检查类型,避免了运行时类型转换的麻烦和潜在的...

    泛型笔记学习2009

    ### 泛型基础知识与应用详解 #### 泛型概述 泛型是Java语言的一个重要特性,它主要解决了在集合框架中频繁出现的类型转换问题,同时也增强了类型安全性。泛型的概念最早出现在Java 5.0版本中,它允许开发者创建能够...

    java 带两个类型参数的泛型

    在Java编程语言中,泛型是一种强大的特性,它允许我们在类、接口和方法中使用类型参数,从而提高代码的灵活性和可复用性。当我们谈论“java带两个类型参数的泛型”时,这意味着我们正在处理一个泛型类或泛型方法,...

    VC++ 2005:泛型编程

    【VC++ 2005:泛型编程】 泛型编程是C++/CLI中的一种重要特性,允许程序员创建可重用的代码,这些代码能够处理多种数据类型,而无需每次都复制和修改代码。泛型编程的核心思想是参数化类型,即将数据类型作为一个...

    SUN公司Java泛型编程文档

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入。这个特性极大地提高了代码的类型安全性和可读性,减少了在运行时出现ClassCastException的可能性。SUN公司的Java泛型编程文档,包括...

    C#泛型,非泛型实现枚举

    在C#编程中,泛型和枚举是两种非常重要的概念。泛型提供了一种方式,使得代码可以处理多种数据类型,而无需为每种类型重复编写相同逻辑。枚举则是用于定义一组预定义的常量,便于表示一组相关的值。下面我们将详细...

Global site tag (gtag.js) - Google Analytics