`
yxwang0615
  • 浏览: 560804 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Java泛型理解示例

    博客分类:
  • java
阅读更多

泛型是Java 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种

参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

  Java语言引入泛型的好处是安全简单。

  在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化

”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行

的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐

患。

  泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用

率。


  泛型在使用中还有一些规则和限制:

  1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。

  2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。

  3、泛型的类型参数可以有多个。

 

DEMO1:未使用泛型

public class NoGeneric {
	private Object obj;
	
	public NoGeneric(Object o) {this.obj = o;}
	
	public Object getObj() {
		return obj;
	}
	public void setObj(Object obj) {
		this.obj = obj;
	}
	public void printType(){
		System.out.println("Obj的实际类型是" + this.obj.getClass().getName());
	}
	public static void main(String[] args) {
		NoGeneric gen = new NoGeneric(8);
		gen.printType();
		int i = (Integer)gen.getObj();
		System.out.println("value = " + i);
		
		System.out.println("----------------------------");
		NoGeneric gen1 = new NoGeneric("hello world");
		gen1.printType();
		String str = (String)gen1.getObj();
		System.out.println("value = " + str);
	}
}

 
输出:

Obj的实际类型是java.lang.Integer
value = 8
----------------------------
Obj的实际类型是java.lang.String
value = hello world

 

DEMO2:使用了泛型

 

public class Generic<T> {
	private T ob;
	
	public Generic(T ob) {
		this.ob = ob;
	}

	public T getOb() {
		return ob;
	}

	public void setOb(T ob) {
		this.ob = ob;
	}
	
	public void printType(){
		System.out.println("T的实际类型是" + this.ob.getClass().getName());
	}
	public static void main(String[] args) {
		Generic<Integer> gen = new Generic<Integer>(8);
		gen.printType();
		int i = gen.getOb();
		System.out.println("value = " + i);
		
		System.out.println("----------------------------");
		Generic<String> gen1 = new Generic<String>("hello world");
		gen1.printType();
		String str = (String)gen1.getOb();
		System.out.println("value = " + str);
		
	}

 输出:

T的实际类型是java.lang.Integer
value = 8
----------------------------
T的实际类型是java.lang.String
value = hello world

 

 

转自:http://www.zhujiangroad.com/html/soft/s10619.html

分享到:
评论

相关推荐

    java 泛型接口示例

    下面我们将详细探讨Java泛型接口的相关知识点。 1. **泛型接口的定义** 泛型接口的定义方式与普通接口类似,只是在接口名之后添加了尖括号`&lt;T&gt;`,其中`T`是一个类型参数,代表某种未知的数据类型。例如: ```java...

    java 泛型方法使用示例

    下面我们将深入探讨Java泛型方法的概念、语法以及使用示例。 **一、泛型方法概念** 泛型方法是一种具有类型参数的方法,这些类型参数可以在方法声明时指定,并在方法体内部使用。与类的泛型类似,它们提供了编译时...

    java 继承泛型类示例

    了解这些概念后,我们可以看到`GenericClass.java`文件可能包含了关于如何创建和使用继承泛型类的实际代码示例。而`Java.jpg`可能是用于辅助解释的图像,比如类结构图或代码截图。在实际学习过程中,结合代码和图像...

    java 泛型类的类型识别示例

    在Java编程语言中,泛型(Generics)是一种强大的特性,它允许我们在编写代码时指定容器(如集合)可以存储的数据类型。这提高了代码的安全性和效率...通过学习和理解这些示例,你可以更好地掌握Java泛型类的类型识别。

    JVM如何理解Java泛型类.doc

    ### JVM如何理解Java泛型类 #### 一、引言 在Java中,泛型是一种强大的功能,它允许程序员编写灵活且类型安全的代码。然而,对于Java虚拟机(JVM)来说,它实际上并不理解泛型的概念。所有的泛型信息在编译阶段就被...

    java泛型深入.pdf

    总之,深入理解Java泛型能够帮助开发者编写更安全、更健壮的代码。通过掌握泛型的原理和细节,开发者可以有效利用泛型来优化代码设计,提升程序的类型安全,同时在维持程序性能的同时简化代码。

    java 继承非泛型类示例

    以下是一个简单的非泛型类示例: ```java public class NonGenericClass { private int value; public NonGenericClass(int value) { this.value = value; } public int getValue() { return value; } ...

    java 泛型的使用 详细讲解

    ### Java泛型的使用详细讲解 #### 一、引言 在Java开发中,泛型是一种重要的语言特性,它能够帮助开发者在不增加代码量的情况下处理多种数据类型,同时还能保持代码的...希望本文能帮助你更好地理解和使用Java泛型。

    java泛型Demo

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入。泛型的主要目的是提供类型安全,帮助程序员在编译时发现...在这个"java泛型Demo"中,你将有机会实践这些概念,加深对Java泛型的理解。

    java泛型初探

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入,极大地增强了类型安全性和代码可读性。泛型允许我们在类、接口和方法中...实践这些示例将有助于进一步理解并熟练掌握Java泛型的精髓。

    Java泛型实例

    Java泛型是Java编程语言中的一个重要特性,它在2004年随着Java SE 5.0的发布而引入。这个特性允许程序员在定义类、接口和方法时声明类型参数,从而增强了代码的类型安全性和重用性。通过使用泛型,我们可以编写更加...

    java泛型例子

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入,极大地增强了类型安全性和代码可读性。...对于Java泛型的例子,可以通过运行和分析压缩包中的`generic`文件来加深理解和实践。

    JAVA泛型教程(帮你解决学习泛型的苦恼)

    Java泛型是Java语言的一个重要特性,它允许在类、接口和方法中声明类型参数,从而提高了代码的复用性和安全性。这个特性自Java 5引入以来,极大地改善了Java的类型系统,降低了类型转换异常的风险。 1. **使用泛型...

    java泛型数组

    本文将深入探讨如何在 Java 中创建泛型数组,并通过具体的示例来理解其中的关键概念。 #### 二、Java 泛型数组的创建 根据题目中的描述和部分代码内容,我们可以了解到在 Java 中无法直接通过 `T[] tarr = new T[10...

    Java泛型与容器详细笔记.pdf (带书签)

    总结来说,Java泛型与容器详细笔记提供了关于如何使用Java中的泛型和容器类的深入理解,涵盖了Java集合框架的核心组件,泛型的类型安全机制,以及一些提高开发效率的第三方库。文档通过实例代码展示了如何在实际项目...

    全面总结Java泛型--实例

    标题与描述均提到了“全面总结Java泛型--实例”,这表明文章旨在深入解析Java泛型的概念,并通过具体示例来展示其应用。Java泛型是Java编程语言的一个强大...理解并熟练掌握Java泛型对于编写高质量的Java程序至关重要。

    Java泛型设计及其PECS原则解析

    使用场景及目标:帮助读者深入理解Java泛型的内在原理和高级用法,掌握PECS原则,从而能够在项目中更高效地运用泛型,提高代码质量和安全性。 其他说明:文章不仅提供了理论知识,还通过实例代码演示了泛型的实际...

Global site tag (gtag.js) - Google Analytics