`
noahgenius
  • 浏览: 138175 次
  • 性别: 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:通用方法

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

    程序员为什么还要刷题-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 ] } } ...

    稳定 Rust 上的特征别名

    这个想法很简单:将一组特征组合在一个名称下。最简单的例子是:use trait_set:: trait_set;trait_set! {pubtraitThreadSafe = Send + Sync; }这里显示的宏 [trait_set ] 是 crate 的主要实体:它允许声明多个 trait...

    @SuppressWarnings

    下面是使用 @SuppressWarnings 来取消 deprecation 警告的一个例子: public class DeprecatedExample2 { @Deprecated public static void foo() { }}public class DeprecatedUser2 { @SuppressWarnings(value={...

    ads:经过身份验证的数据结构

    您可以使用FixAuth将您的数据结构表示为一个固定点,它会自动成为MapAuth一个实例,如。 您可以使用Auth1数据类型并使用派生Generics1 ,然后简单地声明instance MapAuth YourDataType (请参阅和)。 所有方法都...

    asp.net知识库

    一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL学习心得 - 调用属性值 XSLT与XML转换的详细介绍 功能应用 读写搜索 基础教程 RSS Web2.0时代,RSS你会用了吗?(技术...

    .NET基础之自定义泛型分析

    本文实例分析了.NET基础之自定义泛型。分享给大家供大家参考。具体分析如下: 在.NET中泛型使用非常频繁,在...声明一个可空的int类型,由于C#语法对这个做了简化通常我们都不这样写,而是这样写:   int? nullableInt

    Swift_SimpleNetworkLibrary:一个简单轻巧的网络库。 目的还表明,基于URLSession构建网络层是多么容易。 对网络层进行单元测试和存根也非常容易

    要安装它,只需将以下行添加到您的Podfile中: pod 'Swift_SimpleNetworkLibrary'GET请求让我们尝试使用一个很棒的REST API 。 该API为我们提供了一组虚拟的员工。 该员工如下所示。 struct Employee : Codable { ...

    jocky 混肴编译rar包(ant和插件俩个版本)

    我们举一个最简单的例子,下面的SimpleBean是未经混淆的class文件通过Jad反编译以后获得的源文件: 1 public class SimpleBean implements Serializable { 2 3 private String name = "myname"; 4 5 private ...

    java 混淆工具,不可逆 jocky 也许是最好的了

    我们举一个最简单的例子,下面的SimpleBean是未经混淆的class文件通过Jad反编译以后获得的源文件: public class SimpleBean implements Serializable { private String name = "myname"; private List ...

    joc eclipse plugin

    我们举一个最简单的例子,下面的SimpleBean是未经混淆的class文件通过Jad反编译以后获得的源文件: public class SimpleBean implements Serializable { private String name = \"myname\"; private ...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    5.18.1 从Calendar控件中选择一个日期 149 5.18.2 从日历中选择要输出的日期格式 150 5.18.3 选择日期、星期或月份 150 5.18.4 使用日期范围 151 5.18.5 修改日历的样式和操作方式 153 5.19 AdRotator服务器...

    ASP.NET2.0高级编程(第4版)1/6

    26.2 建立一个简单的  XML Web服务945 26.2.1 WebService页面指令946 26.2.2 查看Web服务的  基类文件946 26.2.3 把定制的数据集  显示为SOAP948 26.2.4 XML Web服务接口950 26.3 使用简单的XML Web服务953 26.3....

Global site tag (gtag.js) - Google Analytics