`

泛型注意的细节

 
阅读更多

1、不可以用一个本地类型(如int   float)来替换泛型.比如List<Integer>不能用List<int>型式

2、运行时类型检查,不同类型的泛型类是等价的(Pair<String>与Pair<Employee>是属于同一个 类型 Pair),这一点要特别注意:即如果a instanceof Pair<String>==true的话,并不代表a.getFirst()的返回值是一个String类型

3、泛型类不可以继承Exception类,即泛型类不可以作为异常被抛出

4、不可以定义泛型数组

5、不可以用泛型构造对象,即T first = new T(); 是错误的

6、在static方法中不可以使用泛型,泛型变量也不可以用static关键字来修饰

7、不要在泛型类中定义equals(T x)这类方法,因为Object类中也有equals方法,当泛型类被擦除后,这两个方法会冲突

8、根据同一个泛型类衍生出来的多个类之间没有任何关系,不可以互相赋值,即Pair<Number> p1; Pair<Integer> p2;   p1=p2; 这种赋值是错误的。

9、若某个泛型类还有同名的非泛型类,不要混合使用,坚持使用泛型类
     Pair<Manager> managerBuddies = new Pair<Manager>(ceo, cfo);
     Pair rawBuddies = managerBuddies; 这里编译器不会报错,但存在着严重的运行时错误隐患

分享到:
评论

相关推荐

    java泛型深入.pdf

    Java泛型是Java语言中用于处理类型安全的一种机制,它允许在编译期间提供类型检查,并在...通过掌握泛型的原理和细节,开发者可以有效利用泛型来优化代码设计,提升程序的类型安全,同时在维持程序性能的同时简化代码。

    基于C语言泛型指针技术实现泛型顺序栈的应用研究.pdf

    【实现细节】在实现泛型顺序栈时,首先需要定义数据结构,如文章中提到的SQSTACK结构体。然后,初始化函数InitStack接受顺序栈指针和元素大小作为参数,使用malloc动态分配内存,并设置栈的初始大小。栈顶坐标初始...

    Go-Grizzly允许您在GO中使用集合而不用泛型

    然而,需要注意的是,由于Grizzly依赖于反射,可能在性能上相比于直接使用Go原生数据结构会有所损失,因此在性能敏感的场景下需要权衡使用。 总的来说,Grizzly是Go开发者的一个有力工具,它通过提供泛型般的集合...

    清华大学C++进阶讲义:第10章 泛型程序设计与C++标准模板库.pdf

    值得注意的是,并非所有数据类型都能成为某些概念的模型,比如静态数组类型就不是`Assignable`概念的模型,因为不能使用赋值运算符给整个静态数组赋值。 3. **概念作为模板参数**:在STL中,经常使用概念来命名模板...

    Java1.5泛型指南中文版

    - **转型与 instanceOf**:使用泛型时,需要注意类型转换和 instanceOf 检查的正确性,以避免运行时错误。 - **数组**:泛型不能应用于原始类型的数组,因为 Java 的类型系统无法区分不同类型数组的长度。 #### 8. ...

    stringgrid拖动换行泛型修正

    当处理大量数据或复杂布局时,需要注意性能。例如,避免在每次单元格绘制时都进行完整的文本处理。可以考虑预处理单元格内容并缓存结果,只在必要时更新。 6. **测试与调试** 在实际应用中,务必进行全面的测试,...

    三十分钟掌握STL(泛型编程)

    值得注意的是,STL的头文件不使用传统的`.h`扩展名,以避免与其他头文件发生冲突。 - **命名空间std**:为了防止名称冲突,STL的所有组件都被封装在`std`命名空间内。例如,STL中的`sort()`函数实际上被声明为`std:...

    Java 一些值得注意的细节

    本文将深入探讨Java的一些值得注意的细节,帮助你避免常见陷阱,提升代码质量。 1. **自动装箱与拆箱**:Java中的`Integer`等包装类提供了自动装箱和拆箱功能,方便了开发者操作。但需要注意,虽然在基本类型和包装...

    泛型编程(C++)

    迭代器提供了一种通用的方式来访问容器中的元素,而不暴露容器内部的具体实现细节。 #### 条款1:迭代器案例分析 ##### 案例描述 本条款通过一个具体的示例程序,讨论了迭代器在C++中的正确使用方法,并指出了常见...

    继承 接口与泛型PPT学习教案.pptx

    需要注意的是,Java不支持多重继承,即一个子类只能有一个父类。 **子类与父类的继承性**: 1. **继承的定义**:子类会自动继承父类非私有(`public`或`protected`)的成员变量和方法,就好像它们在子类中直接声明...

    JavaGenericsFAQ

    4. **编译器背后的Java泛型技术细节**:这部分探讨了一些高级且较为深奥的Java泛型方面,适合那些想要深入了解Java泛型内部机制的开发者。 #### 二、Java 泛型基础 ##### 1. 泛型的概念 Java泛型是一种在编译时...

    关于泛型孤子的有效场论

    有效场论是一种场论方法,它将注意力集中于系统中的低能量行为,忽略掉与所考虑的能量尺度不相关的高能量现象。该理论的一个关键概念是模量,模量是描述孤子结构的参数,可以想象成是孤子的内部自由度。当孤子的形状...

    C++编程指导(编程要注意的细节)

    本篇文章将深入探讨一些在C++编程过程中需要注意的关键细节。 1. **类型转换**:C++中的类型转换需要特别注意,如`static_cast`, `dynamic_cast`, `reinterpret_cast` 和 `const_cast`。理解它们的区别和适用场景,...

    android studio下使用aidl接口传递自定义对象

    在Android开发中,有时我们需要在不同的...Test_Service文件可能是包含服务端实现或者测试代码,进一步的细节可能需要查看这个文件的内容来了解。在实际项目中,理解并熟练运用这些技术可以提高应用的交互性和复杂性。

    generics-tutorial.pdf

    - **强制转换和`instanceof`**:在处理泛型时需要注意强制转换和`instanceof`运算符的使用。例如,在使用`instanceof`时可能会遇到类型擦除导致的问题。 - **数组**:由于数组的固定长度特性,使用泛型数组时需要...

    Generic in java programming language

    当涉及到类型转换和`instanceof`操作时,需要注意泛型信息已经被擦除。例如,`List&lt;Integer&gt;`和`List&lt;String&gt;`在运行时都是`List`,因此无法通过`instanceof`判断一个`List`对象的实际类型参数。 ##### 数组 由于...

    java代码细节总结1.0版本.7z

    - 控制流:`if`, `for`, `while`语句,以及`switch`语句的使用和注意事项。 - 函数和方法:定义、调用、参数传递(传值与传引用)。 2. **面向对象** - 类与对象:类是对象的蓝图,对象是类的实例。 - 封装:...

Global site tag (gtag.js) - Google Analytics