`
cloudeagle_bupt
  • 浏览: 579085 次
文章分类
社区版块
存档分类
最新评论

Java泛型(Generic)理解之一:T和?的区别

 
阅读更多
1) 使用T赋值的都是为具体类型.,我们用通配符(?)代替了:
? 叫有限制的通配符, 用于赋值的类型不确定的时候。

2) 观察如下代码:

package genericTest;

public class Parent {

 
}

package genericTest;

public class Child extends Parent {


}


package genericTest;

import java.util.ArrayList;
import java.util.List;

public class Test {

	public static void doTest(List<? extends Parent> list) { //?表示运行时确定具体类型
		
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		List<Parent>  pList = new ArrayList<Parent>() ;
		List<Child>  cList = new ArrayList<Child>() ;

		doTest(pList) ;
		doTest(cList) ;
	}

}

OK, 编译运行正常。


但如果换成如下代码:

	public static void doTest(List<Parent> list) {  
		
	}
则 : doTest(cList) ;编译报错,这是因为后者编译器认为两者类型是不一致的,且在编译期间就确定了,而前者表示运行时才确定。


深入的理解推荐这位的博客:http://www.linuxidc.com/Linux/2013-10/90928.htm

分享到:
评论

相关推荐

    Java泛型编程指南.pdf

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

    java泛型总结

    Java泛型是在JDK5之后引入的一个特性,它提供了一种类型安全的机制,用于指定集合或其他数据结构中的元素类型。通过使用泛型,程序员可以在编译阶段检测类型错误,避免了在运行时进行强制类型转换,从而提高了代码的...

    java 泛型接口示例

    在这个例子中,`GenericInterface`是一个泛型接口,`T`是它的类型参数,`operate()`方法接受一个类型为`T`的参数。 2. **类型参数的约束** 我们还可以对类型参数进行约束,限制它可以是哪些类型的子类。例如,...

    java 泛型方法使用示例

    例如,一个接受两个相同类型参数并返回它们之和的泛型方法可以这样定义: ```java public &lt;T&gt; T sum(T a, T b) { return a + b; } ``` 在这个例子中,`&lt;T&gt;` 是类型参数,代表某种未知的数据类型,`T` 在方法体内...

    java 泛型的使用 详细讲解

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

    java泛型例子

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

    java泛型数组

    ### Java 泛型数组的理解与应用 #### 一、引言 Java 泛型是 Java SE 5.0 引入的新特性,它允许在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。然而,在 Java 中创建泛型数组却...

    [Java泛型和集合].

    总之,Java泛型和集合是提高代码质量和效率的关键工具,理解并熟练掌握它们对于成为一名优秀的Java开发者至关重要。通过深入学习本书和相关代码示例,你将能够更好地利用这些特性来编写更安全、更高效的代码。

    java-generic.rar_泛型

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着Java SE 5.0的...通过阅读《java generic.pdf》这份资料,你应该能够深入理解这些概念,并掌握如何在实际编程中有效地应用Java泛型,提高代码质量和可读性。

    Java1.5泛型指南中文版

    Java泛型的一个重要特点是类型擦除。这意味着在编译之后,所有的类型参数信息都会被擦除,只保留原始类型。例如,`List&lt;Integer&gt;`和`List&lt;String&gt;`都会被擦除为`List`。 #### 在老代码中使用泛型代码 对于那些尚未...

    Java泛型和集合-英文版

    根据提供的文件信息,我们可以确定本书的标题为《Java泛型和集合》(Java Generics and Collections),作者为Maurice Naftalin和Philip Wadler。该书详细介绍了Java中的泛型(Generics)特性以及集合(Collections...

    Java泛型学习【转自百度百科】

    Java泛型是Java编程语言中的一个特性,它允许在定义类、接口和方法时使用类型参数,从而增强了代码的重用性、安全性和效率。在Java中,泛型的引入是为了提供编译时类型安全检查,并减少在运行时进行类型转换的需要。...

    java 继承泛型类示例

    在Java编程语言中,泛型是一种强大的特性,它允许我们在类、接口和方法中使用类型参数,从而提高代码的灵活性和安全性。当我们谈论“继承泛型类”时,这意味着一个类(子类)正在扩展一个已经定义了泛型的类(父类)...

    Java源码泛型类的继承应用.rar

    在Java编程语言中,泛型是一种强大的特性,它...总的来说,理解和掌握Java泛型类的继承应用是提高代码质量和可维护性的关键一步。通过这个压缩包中的源码,你将有机会实践和探索这一主题,进一步提升你的Java编程技能。

    Java-泛型.ppt

    ### Java泛型详解 #### 一、什么是泛型? 在Java中引入泛型之前,开发者通常使用`Object`类型的集合来存储多种不同类型的对象。这种方式虽然灵活,但在使用过程中需要频繁进行类型检查或类型转换,这不仅增加了...

    JAVA5泛型和反射

    Java 5 引入了泛型和反射两个重要的特性,极大地增强了编程的灵活性和安全性。泛型主要是为了解决在编程中频繁进行类型转换的问题,而反射则允许程序在运行时动态地获取类的信息和调用方法。 泛型类型: 在 Java 5 ...

    java泛型指导(挺全的)

    ### Java泛型指导 #### 知识点概览 1. **Java泛型的基本概念** 2. **泛型的优点** 3. **泛型的基本用法** 4. **泛型类与泛型方法** 5. **泛型接口** 6. **泛型通配符** 7. **类型参数的限定** 8. **类型擦除** 9. ...

    关于java的泛型.doc

    Java泛型是一种参数化的类型,它允许在声明类、接口和方法时使用类型参数。类型参数通常用大写字母表示,如`T`、`E`等,它们代表某种未知的类型。当创建泛型类的实例或调用泛型方法时,必须指定具体的类型,这称为...

    Java中的泛型方法演示代码

    Java中的泛型是Java SE 5.0引入的一项重要特性,极大地增强了代码的类型安全性和重用...通过详细阅读和理解这些代码,开发者可以更好地掌握Java泛型方法的概念,并将其应用到自己的项目中,提高代码的灵活性和安全性。

Global site tag (gtag.js) - Google Analytics