不管实际的具体类型是什么样的,一个泛型类是由其所有实例共享的,假定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表达式都是没有意义的。
由于一个泛型类的所有实例都具有相同的运行类,所以一个泛型类的静态变量和静态方法由其所有实例共享。在静态方法或构造方法中引用一个类的泛型类型参数是不合法的。
分享到:
相关推荐
java 一个关于泛型的简单例子 java 一个关于泛型的简单例子 java 一个关于泛型的简单例子
泛型类、泛型方法、泛型接口、泛型委托 泛型类、泛型方法、泛型接口、泛型委托
泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合
关于java的泛型.doc 关于java的泛型.doc
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...
C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型
关于java基础的泛型的练习
C#的泛型C#的泛型
泛型学习和泛型接口和泛型经典示例
【Flutter】Dart 泛型 ( 泛型类 | 泛型方法 | 特定类型约束的泛型 ) https://hanshuliang.blog.csdn.net/article/details/114059611 博客源码快照
泛型和泛型集合类用法泛型和泛型集合类用法泛型和泛型集合类用法泛型和泛型集合类用法泛型和泛型集合类用法
反射和泛型是一种重要的解决途径。 此代码是一个生成泛型对象的类。 比如: Pool<Point> pool = new Pool(){}; Point p = pool.get(x, y); //在此构造Point对象 ... pool.put(p); 希望能帮助那些为查找泛型构造器、...
在.NET FCL为我们提供了很多...结论:如果在C#2.0版本以上,尽量使用泛型集合类,而不使用非泛型集合类。因为,1. 泛型编程是从c#2.0开始才被.net支持的。2.泛型集合在性能和类型安全方面优于非泛型集 合。 。。。。
关于Java泛型的主要介绍,以及泛型的优点和应用
c#泛型类、泛型方法、泛型接口、泛型委托
谈谈关于Microsoft Visual Studio 2008中C#和java泛型的区别
如何利用集合,和泛型来解决看似复杂的问题
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...
C++/CLI泛型编程概览 CLI泛型介绍 CLI泛型适用对象 CLI泛型约束 CLI泛型与C++模板 讲座总结 Q&A
Java泛型编程指南.pdf 此文章译自SUN的泛型编程指南