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

Generics的一个简单例子

    博客分类:
  • java
阅读更多
java SE 5.0 增加了Generics特性,在定义类的时候允许带有“参数”。这个特性的好处就是可以在使用时附加一个类型,但是在定义时却隐藏了具体的使用类型。特别是对于Collection API有非凡的意义。从前,Collection为了保证适用范围尽量的大,将element定义为Object类型,这样,一个添加到Collection的对象便会丧失它的类型信息。而通过Generics,就能避免这种情况,“参数”就能保存对象的类型信息,同时也能起到限制作用。
/**
 * 
 */
package com.test.generics;

import java.util.Date;
/**
 * @author Administrator
 *
 */
public class CTest<E> 
{
	protected E var;
	
	public void setVar(E e)
	{
		var = e;
	}
	
	public E getVar()
	{
		return var;
	}
	
	public String toString()
	{
		return CTest.class.toString();
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
		CTest<String> ct = new CTest<String>();
		ct.setVar("hello world! ");
		System.out.println(ct.getVar());
		
		CTest<Date> cd = new CTest<Date>();
		cd.setVar(new Date());
		System.out.println(cd.getVar());
		
		CTest cc = new CTest();
		cc.setVar(new CTest());
		System.out.println(cc.getVar());
		
		System.out.println(CTest.class.isInstance(ct));
	}

}


一点总结:
1 如果不指定“参数”,默认Object
2 System.out.println(CTest.class.isInstance(ct));//true
分享到:
评论

相关推荐

    generics-tutorial.pdf

    下面通过一个具体的例子来展示如何定义一个简单的泛型类: ```java public class SimpleList&lt;T&gt; { private T[] elements; // 构造函数、添加元素等方法... } ``` 在这个示例中,`T`表示类型参数,`SimpleList...

    Generics with Delphi 2009 Win32

    在某些情况下,可能需要定义一个默认构造函数,以在没有指定初始值时提供一个默认值: ```delphi constructor TTreeNode&lt;T&gt;.Default; begin inherited Create(default(T)); end; ``` ##### D、常规引用与树遍历 ...

    generics:通用方法

    安装要从CRAN安装generics ,请使用: install.packages( " generics " ) 要安装开发版本,请使用: install.packages( " devtools " )devtools :: install_github( " r-lib/generics " )用法generics是一个简单,轻...

    omit-generics:省略实例派生的字段

    以下是一个简单的例子,展示了如何使用`omit-generics`: ```haskell import Generics.SOP.NoOmit data User = User { name :: String, password :: String, email :: String } deriving stock Generic deriving...

    go-generics-example

    "go-generics-example"项目正是一个深入理解Go泛型的优秀实践,由著名开发者松本康弘(mattn)创建,并遵循MIT开源许可证。 Go泛型自Go 1.18版本起被正式引入,为程序员提供了更大的灵活性。在这个例子中,我们可以...

    一些简单java例子

    这个名为“一些简单java例子”的压缩包文件显然包含了针对初学者的基础Java编程实例,旨在帮助新手理解并掌握Java语言的核心概念。 1. **Java基础知识**: - **变量与数据类型**:Java有基本数据类型(如整型、...

    180个针对Java初学者的简单实例

    "180个针对Java初学者的简单实例"提供了丰富的代码示例,帮助初学者深入理解Java的核心概念。 这些实例可能涵盖以下关键知识点: 1. **基础语法**:包括变量声明、数据类型(如整型、浮点型、字符串等)、运算符...

    Java Generics Tutorial

    例如,`ArrayList&lt;Integer&gt;`和`ArrayList&lt;String&gt;`实际上是同一个类的不同实例,这使得泛型类能够高效地复用代码。 #### 类型转换和`instanceof`操作符 当处理泛型类型时,`instanceof`操作符的使用会受到一定限制...

    6-generics(泛型6).pdf

    让我们通过一个简单的例子——`identity`函数来理解泛型的工作原理。这个函数的作用是接收一个参数并原封不动地返回它。如果不用泛型,我们可以这样定义: ```typescript function identity(arg: number): number {...

    GDI+ Delphi接口单元

    GDI+(Graphics Device Interface Plus)是Windows操作系统中用于图形绘制和图像处理的一个高级API,它扩展了传统的GDI(Graphics Device Interface),提供了更多现代化的功能和更好的性能。在Delphi编程环境中,...

    Generics_in_the_Java_Programming_Language.pdf

    例如,集合框架中的List就是一个简单的泛型接口,其中T代表集合中元素的类型。 2. 泛型和子类型化:泛型支持子类型化原则,即如果类型A是类型B的子类型,那么相应的泛型类型A是B的子类型。这种类型关系是协变的。 ...

    java课件(各章都有) 含实例

    例如,可能会有创建简单计算器的实例来练习运算符和流程控制,或者通过设计一个简单的银行账户系统来理解类和对象的使用。还有可能包含网络编程的例子,如Socket通信,以及数据库连接JDBC的应用。 除了基础知识,这...

    Java-Custom-Generics:在 Java 中使用自定义泛型的简单示例

    在自定义泛型类中,我们可以定义一个或多个类型参数,这些参数在实例化类或使用泛型方法时会被具体的类型替换。这样做可以确保对象的创建和操作都遵循我们设定的类型规则。 下面是一些关于在Java中使用自定义泛型的...

    C#开发经验实例(12)

    在C#编程语言的世界里,开发经验实例是学习和提升技能的重要途径。这些实例通常包含了实际项目中的常见问题解决策略、最佳...每一个实例都是一个宝贵的学习机会,帮助开发者从实践中积累经验,提升自己的C#编程能力。

    delphi中关于队列的使用QUEUE

    在Delphi7的小例子中,可能创建了一个简单的事件处理器,使用队列存储待处理的事件,然后按照FIFO原则逐个处理。 ```delphi type TMyEvent = record EventID: Integer; // 其他事件相关数据... end; ...

    程序员为什么还要刷题-generics:我的Go泛型提案的概念验证实现

    这是一个简单的例子。 // reverse.go package main import "fmt" func Reverse ( a [] type T ) { for i , j := 0 , len ( a ) - 1 ; i &lt; j ; i , j = i + 1 , j - 1 { a [ i ], a [ j ] = a [ j ], a [ i ] } } ...

    typescript-generics

    例如,我们定义一个简单的泛型函数 `swap`,交换两个参数的值: ```typescript function swap(a: T, b: T): [T, T] { return [b, a]; } ``` 3. **类型推断与约束** TypeScript会尝试从函数调用中推断泛型...

    typescript例子-Backbone.js MVC

    在这个例子中,我们将看到如何使用TypeScript和Backbone实现一个简单的待办事项管理应用,包括添加、删除和切换任务的完成状态。 通过这个示例项目,开发者可以学习到如何在实际项目中将TypeScript的强类型特性与...

Global site tag (gtag.js) - Google Analytics