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

关于泛型的一些重要事实

    博客分类:
  • JAVA
JVM 
阅读更多

不管实际的具体类型是什么样的,一个泛型类是由其所有实例共享的,假定stack1 和stack2按如下方式创建:

Stack<String> stack1 = new Stack<String>();
Stack<Integer> stack2 = new Stack<Integer>();

 尽管Stack<String>和Stack<Integer>是两种类型,但是只有一个Stack类会被加载到JVM中。stack1和stack2都是Stack的实例,因此下面语句都为真:

System.out.println(stack1 instanceof Stack);
System.out.println(stack2 instanceof Stack);
System.out.println(stack1 instanceof Stack<?>);
System.out.println(stack2 instanceof Stack<?>);

 但是表达式

System.out.println(stack1 instanceof Stack<String>);

 却输出为false,这是由于Stack<String>在JVM中并不是作为一个独立类存储的,所有对它使用强制类型转换或instanceof表达式都是没有意义的。

由于一个泛型类的所有实例都具有相同的运行类,所以一个泛型类的静态变量和静态方法由其所有实例共享。在静态方法或构造方法中引用一个类的泛型类型参数是不合法的。

分享到:
评论

相关推荐

    c语言是如何实现泛型链表

    C语言实现泛型链表涉及到的核心概念包括结构体嵌入、宏定义、指针运算和函数指针。泛型链表允许程序员定义一种链表的...这种泛型技术在操作系统内核开发中尤为重要,它使得内核的代码结构更加清晰,易于维护和扩展。

    modern c++ design(中文版)

    本书是一部重要的著作,全面地展示了泛型模式或模式模板——一各在C++中创建可扩展设计的功能强大的新方法。这种方法结合了模板与模式,也许很多人觉得不可能,但这却是事实!如果你的工作涉及C++设计和编程,那么你...

    Introduction to C# 2.0[英文原版][培养英文阅读能力]

    泛型是C# 2.0中最为重要的新增特性之一。它允许类、结构体、接口、委托和方法通过类型参数来定义,这样就可以存储和操作不同类型的对象而无需编写重复代码。泛型的一个主要优势在于能够提供更强大的编译时类型检查,...

    2011.06 - Java语言程序设计-进阶篇(原书第8版

    3. 泛型编程:泛型是Java SE 5版本中引入的一个重要特性,它允许在编译时提供类型安全检查,同时避免了类型转换的需要。进阶篇会教会读者如何定义和使用泛型类、接口和方法。 4. 异常处理:异常处理是Java编程中的...

    专家系统clips基本编程

    专家系统是人工智能领域的一个重要分支,旨在模拟人类专家的决策过程来解决特定领域的复杂问题。CLIPS(C Language Integrated Production System)是一种广泛使用的专家系统开发工具,它提供了一种高效的方法来构建...

    Java学习材料(499篇文章)

    这份"Java学习材料(499篇文章)"的压缩包显然包含了大量关于Java编程的知识资源,对于初学者和进阶者都是宝贵的资料库。下面将根据这个主题提供一系列Java学习的关键知识点。 1. **基础语法**:学习Java首先要掌握...

    经典计算机书籍.pdf

    3. “J2SE 5.0”是Java 2平台的一个版本,这个版本引入了许多新特性,比如泛型、注解、枚举等,是Java语言发展的一个重要里程碑。 4. 关于Java UI编程,提到了“Swing UI”,这是Java的一个图形用户界面工具包,...

    java程序猿必备开发文档

    理解如何声明和使用泛型类、接口和方法是现代Java编程的重要部分。 11. **Java集合框架的高级特性**:如Lambda表达式、Stream API、Optional类等,这些都是Java 8引入的新特性,极大地提升了代码的简洁性和效率。 ...

    C+++Primer中文版1

    本书的内容广泛,涵盖了C++从基础到高级的所有重要概念,包括程序设计基础、面向对象编程、模板和泛型编程等。作者通过丰富的实例程序使理论讲解生动有趣,帮助读者理解和掌握各种技术要点。书中还详细讨论了C++的...

    76程序员练级攻略(2018):软件设计1

    - **逻辑编程** 基于规则和事实,通过推理解决问题。 - **并发编程** 专注于如何处理多个任务同时执行,通常在多核或多处理器系统中使用。 学习编程范式可以通过阅读经典文章、书籍和实践经验来深化理解。例如,...

    专家系统(c和c#实现)

    2. **泛型和集合**:C#的泛型允许创建类型安全的数据结构,如List,用于存储规则和事实。 3. **委托和事件**:委托可作为函数的引用,用于构建事件驱动的推理机制,而事件则能触发规则的执行。 4. **LINQ查询**:...

    Thriving in a Crowded and Changing World - C++ 2006–2020.pdf

    文章提供了对于这些年来C++发展中事实和特征的混乱流的一个视角,并重点强调了塑造这种语言的思想、人物和过程。讨论的主题包括通过逐步改变来保留C++的本质、简化其使用、改进泛型编程的支持、更好地支持编译时编程...

    Java高新技术2

    Java高新技术2是一个涵盖Java编程语言高级特性和技术的专题,这些技术对于开发高效、可扩展且维护性强的应用程序至关重要。以下是一些Java高新技术的关键点: 1. **多线程编程**: - Java提供了内置的多线程支持,...

    java经典教材笔记

    Java是一种广泛使用的面向对象编程语言,由Sun Microsystems公司于1995年推出,自那以后,它就成为了企业级应用开发的事实标准之一。接下来,我将依据提供的文件内容,详细地介绍Java的关键知识点。 首先,Java语言...

    简单谈谈C++ 头文件系列之(iosfwd)

    简介 输入输出历来都是语言的重要部分,在C++中,该库也是占据了相当大的一部分。 C++的输入输出库是其遵循面向对象设计的结果,并结合了泛型编程。 以下是这些库类的关系图(箭头... 事实上,iosfwd头文件也包含了一些

    java实效编程百例

    下面,我们将深入探讨一些关键的知识点。 1. **异常处理**:在Java中,异常处理是程序健壮性的重要组成部分。学习如何正确地使用try-catch-finally语句块,以及理解不同类型的异常,如检查型异常(checked ...

Global site tag (gtag.js) - Google Analytics