众所周知,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);
}
}
分享到:
相关推荐
本文将深入探讨泛型类、泛型方法、泛型接口和泛型委托,并通过实例来阐述它们的应用。 首先,我们来看泛型类。泛型类是具有一个或多个类型参数的类。类型参数是在定义类时使用的占位符,实际的类型在创建类的实例时...
Java 泛型是一种强大的语言特性,自JDK 5.0引入以来,极大地提升了代码的类型安全性以及重用性。泛型允许我们在类、接口和方法中使用类型参数,这样在编译时期就能检查类型匹配,减少运行时类型转换异常。 1. **...
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...
Java泛型的用法及T.class的获取过程解析 Java泛型是Java编程语言中的一种重要特性,它允许开发者在编写代码时指定类型参数,从而提高代码的灵活性和可读性。本文将详细介绍Java泛型的用法 及T.class的获取过程解析...
Java泛型是Java SE 5.0引入的一个重要特性,它极大地增强了代码的类型安全性和可读性。泛型在编程中的应用广泛,特别是在集合框架中,使得我们可以在编译时就检查类型,避免了不必要的类型转换,并且提高了代码的...
反射和泛型是一种重要的解决途径。 此代码是一个生成泛型对象的类。 比如: Pool<Point> pool = new Pool(){}; Point p = pool.get(x, y); //在此构造Point对象 ... pool.put(p); 希望能帮助那些为查找泛型构造器、...
关于Java的泛型,这是Java 5.0版本引入的一项重大特性,旨在提供类型安全的集合操作,并增强代码的重用性和灵活性。泛型允许程序员在设计类或接口时使用类型参数,使得类或接口可以处理任何数据类型,而不必为每种...
泛型则是Java在J2SE 5.0版本引入的一个特性,极大地提高了代码的类型安全性和可读性。下面我们将深入探讨这两个主题。 首先,集合框架包括接口(如List、Set和Queue)和实现这些接口的具体类(如ArrayList、...
泛型是Java语言的一个重要特性,首次出现在Java SE 1.5版本中。它的引入主要是为了解决在集合操作中类型安全性的问题,并通过引入参数化类型的概念,提高了代码的复用性与可读性。 ### 泛型概念 泛型,即参数化...
在这个特定的案例中,我们关注的是在Web服务(WebService)中如何处理泛型,以及如何在移动设备(mobile端)上与之交互。泛型是C#编程语言中的一个重要特性,它允许我们在代码中创建可重用的类型安全的数据结构,而...
在Java编程语言中,泛型(Generics)是一种强大的特性,它允许我们在编写代码时指定容器(如集合)可以存储的数据类型。这提高了代码的安全性和效率,因为编译器可以在编译时检查类型,避免了运行时...
泛型是Java编程语言中的一个重要特性,它引入于JDK 5.0,极大地提高了代码的类型安全性和可读性。泛型允许我们在类、接口和方法中使用类型参数,这样我们可以在编译时检查类型,避免了运行时类型转换的麻烦和潜在的...
### C# 泛型详解 #### 一、关于 Java、C# 泛型的看法 - **C# 与 Java 泛型的区别与优劣** 在 IT 领域,尤其是面向对象编程语言中,C# 和 Java 均提供了泛型支持来增强程序的类型安全性和复用性。尽管 C# 2.0 和 ...
### 泛型基础知识与应用详解 #### 泛型概述 泛型是Java语言的一个重要特性,它主要解决了在集合框架中频繁出现的类型转换问题,同时也增强了类型安全性。泛型的概念最早出现在Java 5.0版本中,它允许开发者创建能够...
在Java编程语言中,泛型是一种强大的特性,它允许我们在类、接口和方法中使用类型参数,从而提高代码的灵活性和可复用性。当我们谈论“java带两个类型参数的泛型”时,这意味着我们正在处理一个泛型类或泛型方法,...
【VC++ 2005:泛型编程】 泛型编程是C++/CLI中的一种重要特性,允许程序员创建可重用的代码,这些代码能够处理多种数据类型,而无需每次都复制和修改代码。泛型编程的核心思想是参数化类型,即将数据类型作为一个...
Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入。这个特性极大地提高了代码的类型安全性和可读性,减少了在运行时出现ClassCastException的可能性。SUN公司的Java泛型编程文档,包括...
在C#编程中,泛型和枚举是两种非常重要的概念。泛型提供了一种方式,使得代码可以处理多种数据类型,而无需为每种类型重复编写相同逻辑。枚举则是用于定义一组预定义的常量,便于表示一组相关的值。下面我们将详细...