`
Que
  • 浏览: 15941 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

略谈泛型

    博客分类:
  • Java
JDK 
阅读更多

  泛型(generic)是参数化类型的能力,其中可以在类、接口、方法中声明一个泛型类型。

 

  我们来对比一下JDK 1.5前后对java.lang.Comparable接口的声明:

 

 

package java.lang;

 

public interface Comparable {
   public int compareTo(Object o);
}
 

    1.5前的版本

 

 

package java.lang;

 

public interface Comparable<T> {
   public int compareTo(T o);
}

   1.5后的版本

 

    后面<T>表示的就是一个泛型类型,当我们要实现的时候可以根据实际情况代替T表示的类型,其中一个很典型的泛型类

ArrayList<T>的声明中,如果我们存入线性表的对象为字符串时,我们可以作以下的声明:

 

    以下两句在编译过程中没有报错,在运行过程中报错了(对比的类型不匹配所致)

 

    

Comparable sample = new String();

 

System.out.println(sample.compareTo(1));

 

     而以下两句在编译的过程中就报错了

 

     

Comparable<String> sample = new String();

 

System.out.println(sample.compareTo(1));

 

     通过对比,可以看出声明为泛型的类,接口,方法等将会使程序的安全性加强。这是其主要优点之一。

 

     我们可以为我们自己定义的类,接口或者方法声明为泛型,下面是演示的是一个声明为泛型的堆栈类

 

     

package pack21_1;

 

/**
 *
 * @author Administrator
 */
public class GenericStack<E>  {
  public final static int INITAL_SIZE=16;
  //声明泛型数组
  private E[] element;
  //声明size
  private int size;
  //无参构造函数
  public GenericStack ( ) {
      this(INITAL_SIZE);
  }
  public GenericStack( int inital_size ) {
      //这里要注意,泛型不能实例化,只能通过强制转换来得到
      element = (E[])new Object[inital_size];
  }
//实现push方法
  public E push( E value ) {
      //判断是否够空间
      if(size>=element.length){
         E[] newElement = (E[])new Object[2*element.length];
         System.arraycopy(element, 0, newElement, 0, element.length);
         element = newElement;
      }

      return element[size++]=value;
  }
//实现pop方法
  public E pop( ) {
      return element[--size];
  }

  public int getSize( ) {
      return size;
  }

}

 

   同时我们也可以声明泛型的接口和方法。

分享到:
评论

相关推荐

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

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

    浅谈c# 泛型类的应用

    C#中的泛型类是编程中的一个重要概念,它允许我们创建可以处理多种数据类型的类,提高了代码的重用性和效率。下面将详细讲解泛型类的各个方面。 1. **泛型类的基本应用** 泛型类的核心在于类型参数,这使得类能够...

    泛型dao 泛型dao 泛型dao

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

    gson解析泛型和将泛型转为json字符串

    本文将深入探讨如何使用Gson处理泛型,并将其转换为JSON字符串。 首先,理解泛型在Java中的作用是至关重要的。泛型允许我们在类、接口和方法中使用类型参数,从而提高了代码的类型安全性和重用性。当我们使用Gson与...

    【Flutter】Dart 泛型 ( 泛型类 泛型方法 特定类型约束的泛型 ).zip

    【Flutter】Dart 泛型 ( 泛型类 | 泛型方法 | 特定类型约束的泛型 ) https://hanshuliang.blog.csdn.net/article/details/114059611 博客源码快照

    泛型学习和泛型接口和泛型经典示例

    泛型学习和泛型接口和泛型经典示例

    JAVA-泛型课件-泛型课件

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

    Java泛型编程指南.pdf

    ### Java泛型编程指南知识点详解 #### 一、绪论:理解Java泛型的重要性与背景 **1.1 泛型的基本概念** 泛型是一种在编程语言中支持编写类型安全的通用函数或类的能力。在Java中引入泛型的主要目的是为了提供更...

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

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

    VC++ 2005:泛型编程

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

    关于java基础的泛型的练习

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

    java泛型指南 经典

    ### Java泛型指南经典知识点解析 #### 一、引言 Java 1.5 版本引入了一系列重要的语言特性,其中“泛型”是其中一项关键特性。泛型的引入极大地提高了 Java 语言的类型安全性和代码重用性。本文档旨在深入探讨 ...

    SSH泛型代码实例

    SSH泛型代码实例是关于Java编程中的一种常见技术——Spring、Struts和Hibernate(SSH)框架结合使用泛型的应用示例。泛型是Java SE 5.0引入的一个重要特性,它允许在编译时检查类型安全,并且所有的强制转换都是自动...

    泛型笔记学习2009

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

    c#泛型类、泛型方法、泛型接口、泛型委托

    泛型主要分为四个关键部分:泛型类、泛型方法、泛型接口和泛型委托。下面将详细介绍这四个方面。 1. 泛型类: 泛型类是具有一个或多个类型参数的类。这些类型参数是占位符,代表一种未知的数据类型,直到在创建类...

    java 1.5泛型详解

    Java泛型是自Java 1.5版本引入的一项重要特性,极大地提高了代码的类型安全性和重用性。本文将深入探讨Java泛型的概念、优点、使用方式及其在实际开发中的应用。 **一、泛型的基本概念** 泛型是Java语言中的一种...

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

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

    Generic_2(泛型类-泛型方法-泛型接口-泛型限定(上限)

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...

    c# 泛型的使用,教你如何用泛型

    7. **泛型接口和泛型类的组合**:你可以在泛型类中实现泛型接口,也可以在非泛型类中实现泛型接口,进一步增强代码的复用性。 8. **泛型和多态**:泛型是多态的一种形式,因为它允许你用一种类型安全的方式处理不同...

Global site tag (gtag.js) - Google Analytics