`
C_SHaDow
  • 浏览: 49828 次
  • 性别: Icon_minigender_1
  • 来自: 大同
社区版块
存档分类
最新评论

泛型的类型擦除

 
阅读更多

当把一个具有泛型信息的对象赋给另一个没有泛型信息的变量时,所有在尖括号之间的类型信息都将被丢弃。这种擦除不仅会擦除使用该Java类时传入的类型实参,而且会擦除所有的泛型信息,也就是擦除所有尖括号里的信息。

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

public class ErasureTest {

	public static void main(String[] args) {
		Apple<Integer> a = new Apple<Integer>(6);
		for(String apple : a.getApples()) {
			System.out.println(apple);
		}
		Apple b = a;
		// 提示“不兼容的类型”编译错误
		for(String apple : b.getApples()) {
			System.out.println(apple);
		}
	}

}

class Apple<T extends Number> {
	T size;

	public Apple(T size) {
		this.size = size;
	}

	public String toString() {
		return "Apple[size=" + size + "]";
	}
	
	public List<String> getApples() {
		List<String> list = new ArrayList<String>();
		for (int i = 0; i < 3; i++) {
			list.add(new Apple<Integer>(10*i).toString());
		}
		return list;
	}
}
 
分享到:
评论

相关推荐

    Java泛型类型擦除后的补偿

    NULL 博文链接:https://hyzhaolt.iteye.com/blog/443661

    Java 泛型擦除后的三种补救方法

    Java中的泛型,在运行时刻其具体类型是被擦除的,这样我们就不能用new T(),instanceof等关操作,特别是对泛型类型的类的实例化问题,在此根据《Thinking in Java》中所讲的对类型擦除所带来问题的三种解决方案,比较...

    解析Java泛型的类型擦除.pdf

    解析Java泛型的类型擦除.pdf

    Java 泛型总结(一):基本用法与类型擦除

    本文主要介绍了Java泛型的使用以及类型擦除相关的问题。具有很好的参考价值。下面跟着小编一起来看下吧

    Java泛型与类型擦除

    这个过程由“类型擦除”实现。但是并非像许多开发者认为的那样,在 &lt;..&gt; 符号内的东西都被擦除了。看下面这段代码: public class ClassTest { public static void main(String[] args) throws Exception { ...

    Java-Edge#Java-Interview-Tutorial#Java语法糖之泛型与类型擦除1

    - 泛型擦除前的例子把这段Java代码编译成Class文件,然后再用字节码反编译后,將会发现泛型都不见了,又变回了Java泛型出现之前的写法,泛型类型都变回了原

    详解:泛型、擦除、边界

    泛型的目的是用来指定容器要持有什么类型的对象,而由编译器来保证类型的正确性。使用泛型参数 T,用尖括号括住,放在类后。 /** * 使用泛型参数 T,用尖括号括住,放在类后 */ public class Tested { private T ...

    Java泛型不是真正的泛型

    详细的介绍了Java是伪泛型的原因,介绍了类型擦除的内容等。

    Java 泛型最全指南(定义和使用+继承泛型类/实现泛型接口+泛型的边界+通配符+类型擦除)

    Java 泛型最全指南(定义和使用+继承泛型类/实现泛型接口+泛型的边界+通配符+类型擦除)

    java深度历险

    类型擦除 28 实例分析 29 通配符与上下界 30 类型系统 31 开发自己的泛型类 32 最佳实践 32 参考资料 33 目录 3 JAVA注解 34 使用注解 34 开发注解 35 处理注解 35 实例分析 38 参考资料 39 JAVA反射与动态代理 40 ...

    Java语言 泛型讲解案例代码 (泛型类、泛型接口、泛型方法、无界及上下限通配符、泛型对协变和逆变的支持、类型擦除 ...)

    实际项目中需要使用泛型来增加类型安全性和重用性的开发任务。 目标: 本代码资源的目标是帮助读者理解泛型的用法和优势,并通过实际的示例代码加深对泛型的掌握。读者可以通过运行这些示例代码来观察泛型的行为和...

    Java编程探索之泛型擦除实例解析

    主要介绍了Java编程探索之泛型擦除实例解析,具有一定参考价值,需要的朋友可以了解下。

    Java基础:泛型及其擦除性、不可协变性

     在Java SE1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。...

    Java 基础泛型.pdf

    2. 类型擦除:Java泛型在编译时实现类型安全检查,但在运行时会将泛型类型的信息擦除,转换为原始类型。这是为了保持与Java早期版本的兼容性,同时减少运行时的开销。例如,List在运行时会被擦除为List。 3. 上限和...

    详解java 中泛型中的类型擦除和桥方法

    主要介绍了详解java 中泛型中的类型擦除和桥方法的相关资料,需要的朋友可以参考下

    泛型generics.zip

    泛型(Generics)是JDK5引入的一种参数化类型特性。它提供了编译时类型安全检测机制。其本质是参数类型,所操控的数据类型被指定为一个参数。泛型不存在于JVM虚拟机。...泛型擦除带来的影响,泛型具体如何擦除。

    简单理解java泛型的本质(非类型擦除)

    泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛...泛型是参数化类型的应用,操作的数据类型不限定于特定类型,可以根据实际需要设置不同的数据类型,以实现代码复用。下面小编来简单讲一讲泛型

    【java核心技术】泛型设计

    目录一、泛型概述二、泛型定义(1)泛型类(2)泛型方法2.1 泛型可变参数(3)泛型接口(4)类型限定三、泛型使用(1)类型通配符1.1 上限1.2 下限四、泛型擦除五、泛型数组 一、泛型概述 泛型,即是参数化类型。在...

    详解Java类型擦除机制

    Java泛型是JDK 5引入的一个特性,它允许我们定义类和接口的时候使用参数类型,泛型在集合框架中被广泛使用。这篇文章主要介绍了Java类型擦除机制,需要的朋友可以参考下

    Java 泛型(Generics)使用说明

    本例子说明演示了Java范型使用的动机、范型类的使用、范型方法的使用,以及范型的缺陷:类型擦除(type erasure).因为,现在Java的反射机制不能确定集合中的对象类型! 在实际应用中,如果能够灵活应用范型和反射...

Global site tag (gtag.js) - Google Analytics