- 浏览: 88914 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (97)
- java (23)
- 自定义标签 (3)
- struts (7)
- SSI (0)
- SSH (6)
- IBATIS (14)
- hibernate (2)
- spring (2)
- ssl认证 (1)
- jstl (2)
- jstl中list嵌套map (0)
- ajax (2)
- lucene (2)
- js (5)
- servlet (1)
- jquery (0)
- javascript (7)
- struts1 (1)
- sql (7)
- 公司面试心得 (3)
- jdk (1)
- ERP行业必备的工具 (1)
- 数据库连接池 (1)
- 日志配置问题 (1)
- 呵呵 (0)
- DOJO (1)
- WS (0)
- 工作流JBPM (1)
- 開發工具準備 (1)
- 注解 (0)
- fdsfsdf (0)
- 分页 (0)
- oracle (1)
最新评论
-
kongchuijian:
System.out.println(Arrays.toStr ...
java中数组的问题 -
wyr123789:
你上面已经定义成字节型的为什么还要强转啊?还有你那个'z'-i ...
新手入门 -
ipanel420:
居然是茁壮的同事
SSH2整合+分页+ajax+js校验用户名 -
yemengfan:
楼主能不能把你这个项目发给我啊。我想看看! yemengfa ...
SSH2整合+分页+ajax+js校验用户名
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
Java语言引入泛型的好处是安全简单。
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
泛型在使用中还有一些规则和限制:
1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
3、泛型的类型参数可以有多个。
4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上成为“有界类型”。
5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName(java.lang.String);
泛型还有接口、方法等等,内容很多,需要花费一番功夫才能理解掌握并熟练应用。在此给出我曾经了解泛型时候写出的两个例子(根据看的印象写的),实现同样的功能,一个使用了泛型,一个没有使用,通过对比,可以很快学会泛型的应用,学会这个基本上学会了泛型70%的内容。
例子一:使用了泛型
public class Gen1<T> {
private T ob;
public Gen(T ob){
this.ob=ob;
}
public T getOb(){
return ob;
}
public void setOb(T ob){
this.ob=ob;
}
public void showType() {
System.out.println("T的实际类型是:"+ob.getClass().getName());
}
}
public class GenDemo1 {
public static void main(String[] args){
//定义泛型类Gen的一个Integer版本
Gen<Integer> intOb=new Gen<Integer>(55);
intOb.showTyep();
int i= intOb.getOb();
System.out.println("value= " + i);
System.out.println("<------------------>");
//定义泛型类Gen的一个String版本
Gen<String> strOb=new Gen<String>("Hello Gen!");
strOb.showTyep();
String s=strOb.getOb();
System.out.println("value= " + s);
}
}
例子二:没有使用泛型
public class Gen {
private Object ob; //定义一个通用类型成员
public Gen2(Object ob) {
this.ob = ob;
}
public Object getOb() {
return ob;
}
public void setOb(Object ob) {
this.ob = ob;
}
public void showTyep() {
System.out.println("T的实际类型是: " + ob.getClass().getName());
}
}
public class GenDemo {
public static void main(String[] args) {
//定义类Gen2的一个Integer版本
Gen2 intOb = new Gen2(new Integer(88));
intOb.showTyep();
int i = (Integer) intOb.getOb();
System.out.println("value= " + i);
System.out.println("----------------------------------");
//定义类Gen2的一个String版本
Gen2 strOb = new Gen2("Hello xiaobai!");
strOb.showTyep();
String s = (String) strOb.getOb();
System.out.println("value= " + s);
}
}
运行结果:
两个例子运行Demo结果是相同的,控制台输出结果如下:
T的实际类型是:
java.lang.Integer
value= 55
----------------------------------
T的实际类型是: java.lang.String
value= Hello xiaobai!
Process finished with exit code 0
Java语言引入泛型的好处是安全简单。
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
泛型在使用中还有一些规则和限制:
1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
3、泛型的类型参数可以有多个。
4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上成为“有界类型”。
5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName(java.lang.String);
泛型还有接口、方法等等,内容很多,需要花费一番功夫才能理解掌握并熟练应用。在此给出我曾经了解泛型时候写出的两个例子(根据看的印象写的),实现同样的功能,一个使用了泛型,一个没有使用,通过对比,可以很快学会泛型的应用,学会这个基本上学会了泛型70%的内容。
例子一:使用了泛型
public class Gen1<T> {
private T ob;
public Gen(T ob){
this.ob=ob;
}
public T getOb(){
return ob;
}
public void setOb(T ob){
this.ob=ob;
}
public void showType() {
System.out.println("T的实际类型是:"+ob.getClass().getName());
}
}
public class GenDemo1 {
public static void main(String[] args){
//定义泛型类Gen的一个Integer版本
Gen<Integer> intOb=new Gen<Integer>(55);
intOb.showTyep();
int i= intOb.getOb();
System.out.println("value= " + i);
System.out.println("<------------------>");
//定义泛型类Gen的一个String版本
Gen<String> strOb=new Gen<String>("Hello Gen!");
strOb.showTyep();
String s=strOb.getOb();
System.out.println("value= " + s);
}
}
例子二:没有使用泛型
public class Gen {
private Object ob; //定义一个通用类型成员
public Gen2(Object ob) {
this.ob = ob;
}
public Object getOb() {
return ob;
}
public void setOb(Object ob) {
this.ob = ob;
}
public void showTyep() {
System.out.println("T的实际类型是: " + ob.getClass().getName());
}
}
public class GenDemo {
public static void main(String[] args) {
//定义类Gen2的一个Integer版本
Gen2 intOb = new Gen2(new Integer(88));
intOb.showTyep();
int i = (Integer) intOb.getOb();
System.out.println("value= " + i);
System.out.println("----------------------------------");
//定义类Gen2的一个String版本
Gen2 strOb = new Gen2("Hello xiaobai!");
strOb.showTyep();
String s = (String) strOb.getOb();
System.out.println("value= " + s);
}
}
运行结果:
两个例子运行Demo结果是相同的,控制台输出结果如下:
T的实际类型是:
java.lang.Integer
value= 55
----------------------------------
T的实际类型是: java.lang.String
value= Hello xiaobai!
Process finished with exit code 0
发表评论
-
JDK、Tomcat、MyEclipse整合
2013-03-13 22:18 0http://wenku.baidu.com/view/222 ... -
dt_003_02
2012-11-16 17:55 0@SuppressWarnings("uncheck ... -
dt_002_03
2012-11-15 19:41 0private static Map<String, L ... -
dt_002_02
2012-11-15 19:22 0package com.star.web.action; i ... -
dt_002_003
2012-11-15 19:13 0public String saveSetting() thr ... -
dt_0002_01
2012-11-15 17:21 0<%@ page language="java ... -
text测试
2012-05-10 18:35 0http://hi.baidu.com/boy86xf/ite ... -
分页测试
2012-05-10 18:34 0package com.chinasoft.remunerat ... -
java入门例子的思考
2011-11-14 13:05 1470public class testjava{ public ... -
IO的操作
2011-03-28 11:38 649一. Input和Output 1. stream代表的是任何 ... -
编码规范
2011-03-25 17:51 753很久以来都在体会着JAVA的风格,现在做一简单陈述,希望大家多 ... -
java中数组的问题
2011-03-17 09:00 951public class ThreeDay { pub ... -
把一个数组中的偶数重新组成一个新数组
2011-03-14 15:08 955挖哈哈!! 刚刚上班,通信联系坏了,公司的人联系不到我,我就 ... -
面试的一个简单程序但是当时没有想起来
2011-03-09 18:38 7081.2.2.4.8.16.32 请问第32位是多少这样的jav ... -
快速排序
2011-03-08 00:03 6581. 采用快速排序,一般 ... -
string类
2011-02-18 01:14 6881、考查"=="的结果 2、String ... -
上传和下载
2010-10-25 10:38 840public HttpServletResponse down ... -
java集合
2010-10-25 09:24 7661. ArrayList 基于数组方式实现,无容量的限 ... -
java中static private 与 final 详谈
2010-10-19 13:55 1133文章分类:Java编程 1.static表示静态。他是属于类 ... -
java中的对象详谈
2010-10-14 18:29 7642.1 用引用操作对象 (1 ...
相关推荐
2. **泛型方法**: 类似于泛型类,我们也可以在类或结构体中定义泛型方法。这些方法可以有自己的类型参数,使得方法可以在不指定具体类型的情况下处理数据。例如,`void Swap(ref T a, ref T b)`方法可以交换两个相同...
C++标准库(STL,Standard Template Library)大量使用了泛型编程,如`std::vector<T>`, `std::map, TValue>`等。这些容器提供了丰富的操作,并且可以自动管理内存,实现了高效的数据存储和检索。 六、C++泛型编程...
本文将深入探讨泛型类、泛型方法、泛型接口和泛型委托,并通过实例来阐述它们的应用。 首先,我们来看泛型类。泛型类是具有一个或多个类型参数的类。类型参数是在定义类时使用的占位符,实际的类型在创建类的实例时...
### Delphi 泛型使用全集(队列_栈_字典_列表_...以上是关于 Delphi 中 `TQueue` 和 `TStack` 的基本使用方法及其关键知识点的详细介绍。通过这些示例,你可以了解到如何在 Delphi 应用程序中有效地使用这些泛型集合。
本篇文章将深入探讨C#中的泛型使用方法,帮助你更好地理解和应用这一关键概念。 首先,我们需要理解什么是泛型。泛型允许我们在定义类、接口、委托和方法时,不指定具体的类型参数,而是使用一个占位符,如`T`、`K`...
Java静态泛型使用方法实例解析 Java静态泛型使用方法实例解析主要介绍了Java静态泛型使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。 一...
泛型是.NET Framework 2.0引入的一项重要特性,它允许开发者在类、接口和方法中定义类型参数,从而实现数据类型的参数化。这带来了多方面的优势,包括类型安全、性能提升以及代码重用。在ASP.NET中,泛型尤其在数据...
泛型方法是一种具有类型参数的方法,这些类型参数可以在方法声明时指定,并在方法体内部使用。与类的泛型类似,它们提供了编译时类型检查,防止了不兼容类型的对象被传递,同时消除了强制类型转换的需要。 **二、...
### Java泛型的重要使用方法 #### 一、引言与背景 在软件开发过程中,我们经常需要编写可重用的代码来处理不同类型的对象。例如,假设我们需要创建一个`MyArrayList`类,它可以用来存储一系列的数据,并提供添加和...
* 工具类:泛型可以用于工具类中,例如工具类的静态方法可以使用泛型。 五、结论 泛型是Java编程语言中的一种重要特性,它可以提高代码的灵活性和可读性。通过使用泛型,我们可以编写更加灵活和可维护的代码。此外...
泛型方法是在特定类或结构体中定义的,只在该方法内部使用类型参数。这样,方法可以处理多种数据类型,而无需重复编写相同代码。例如,以下代码展示了一个交换两个元素值的方法: ```csharp public static void ...
### 泛型和泛型集合类用法详解 #### 一、泛型基础概念 泛型是现代编程语言中的一项重要特性,它允许开发者在不指定具体数据类型的情况下编写类或方法,从而达到代码重用的目的。在.NET Framework 2.0及以后版本中...
本文实例分析了C#泛型用法。分享给大家供大家参考。具体分析如下: 这里演示如何创建具有单个类型参数的自定义泛型列表类,以及如何实现 IEnumerable<T> 以便对列表的内容启用 foreach 迭代。此示例还演示客户端代码...
这些库的源码提供了丰富的示例,可以帮助我们更好地掌握泛型和方法的高级用法,比如类型通配符、限制类型参数、擦除和桥接方法等。 总的来说,泛型和方法是Java编程的核心组成部分,熟练掌握它们能够使我们的代码...
在本教程中,我们将深入探讨C#中的泛型方法的使用。 首先,让我们理解什么是泛型方法。泛型方法是在定义方法时引入了一个或多个类型参数,这些类型参数在方法被调用时由实际的类型替换。这使得同一个方法可以处理...
dao接口 : PersonDAO extends GenericDao, Integer> 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 findByNameExact()方法 子类的附加方法。 泛型daoimpl :GenericDaoImpl, ID extends ...
泛型队列遵循先进先出(FIFO)原则,使用`Enqueue`方法添加元素到队尾,`Dequeue`方法移除并返回队首元素。`Queue<T>`实现了`ICollection<T>`和`IEnumerable<T>`接口。 6. **泛型栈(Stack)** 栈遵循后进先出...
在本文中,我们将详细介绍 Java 泛型的使用方法和实现原理。 一、泛型的简介 泛型是 Java 5 中引入的一种语言特性,旨在解决类型安全问题。在 Java 中,泛型可以应用于集合、类、接口和方法中。泛型的主要目的是...
泛型,即参数化类型(Parameterized Types),是允许在定义类、接口和方法时使用类型参数的特性。在创建类、接口或方法的时候,可以用一个或多个类型作为参数。泛型的关键在于类型参数化,这意味着可以将操作的数据...
本文将深入探讨这两个概念以及相关的使用方法。 首先,我们来了解泛型。泛型是Java 5引入的一项特性,它允许在定义类、接口和方法时指定类型参数,以增强代码的类型安全性和可读性。通过使用泛型,我们可以限制容器...