今天需要实现根据类得到类的泛型的type,实现过程总是报错,就去看了下泛型,写了简单的实例:
这里声明的是Integer类型,但是引用是A a,即没有确定是类型;在初始化类的时候有个类型擦除(type erasure)。 即初始化结束后T没了 但又不能没有返回值或者对象类型,所有就初始化成Object类型;
public void setmethod(Object ba){
this.bb=ba;
}
所以这里18、19行有警告。有时候会出现castclassexception。
这里A<Integer> a已经申明是Integer,所有编译器检查的时候就会对传入的的检查。而传入的是String的,所以报错,编译不通过。
public class A<T> {
public A() {
// TODO Auto-generated constructor stub
}
T bb;
public void setmethod(T ba){
this.bb=ba;
}
public T getmethod(){
String ss="fhdskaj";
return (T)ss;
}
public static void main(String[] args) {
A<Integer> a= new A<Integer>();
a.setmethod(11);
System.out.println(a.getmethod());
}
}
这里编译通过,在初始化后T泛型被擦除,由jvm分配合适的类型(object);
public T getmethod(){
String ss="fhdskaj";
return (T)ss;
}
这里的T被擦除成Object的类型,而编译的时候T不知道是什么类型,ss是String类型,不一定错,所以编译器只是警告。而运行后这里被擦除,Object的类型了,所以string自动转化成了object了,输出string。
文献:http://www.infoq.com/cn/articles/cf-java-generics
- 大小: 7.3 KB
- 大小: 8 KB
分享到:
相关推荐
综上所述,Visual C++ 2005和C++/CLI代表了微软在整合本地代码与托管代码方面的重要进展,不仅提升了开发效率和代码质量,还为开发者提供了前所未有的灵活性和性能优化的可能性。通过对CLR的深度利用,C++/CLI证明了...
### 深入理解C#:第二版 英文版 ...总之,《C# In Depth》是一本非常有价值的书籍,无论是对于想要进一步提升C#技能的开发者,还是希望了解C#最新进展的专业人士来说,都是一个不可多得的好资源。
这本书的深度和广度都更上一层楼,对于希望了解Java最新进展或准备进行专业开发的读者来说尤其有价值。附带的习题答案进一步强化了学习过程,使读者能够独立解决问题。 压缩包中的"Thinking in Java 3th Edition...
- **深度学习与Keras**:探讨了深度学习领域的最新进展及其与Keras的关系。 - **致谢**:感谢所有为Keras发展做出贡献的人们。 以上是对Keras中文手册中提到的主要知识点的概述。这些内容不仅覆盖了Keras的基础使用...
高清晰度不仅仅是指图像或文本的清晰度,更暗示了内容的深度和准确性。 #### 标签:C# 深入理解 这个标签简洁明了地指出了本书的主题——深入理解C#。它告诉读者,这本书不仅仅是对C#的基础介绍,而是深入探讨高级...
《.NET技术深度解析》 本课程以"dotNet课件 ustc-sse"为主题,深入探讨了微软的.NET框架,这是一个广泛使用的开发平台,用于构建各种类型的应用程序,包括Web应用、桌面应用以及移动应用。课程内容涵盖.NET的基础...
《Professional C++》是一本深度探讨C++编程语言的专业书籍,旨在帮助读者全面掌握C++的高级特性和最佳实践。本书涵盖了从基础语法到高级模板技术,从对象模型到内存管理,从STL到设计模式等多个方面,是C++开发者...
- 模板:C++中的模板允许开发者创建泛型代码,可用于处理不同数据类型,包括函数模板和类模板。 - 异常处理:C++的异常处理机制用于捕获和处理程序运行时可能出现的错误。 2. C++11/14/17新特性: - Lambda...
在第三版中,作者对原有的内容进行了更新,以适应Java技术的最新进展,体现了作者对技术持续改进的精神。本书适合初学者和有经验的程序员,无论你是刚接触Java,还是已经在Java领域有一定经验,都可以从中获取新的...
- 模板:泛型编程,允许定义通用的函数和类。 4. **类型转换** - C/C++有四种类型转换:隐式转换、显式转换、`const_cast`、`static_cast`、`dynamic_cast`和`reinterpret_cast`。 5. **静态成员** - 静态成员...
《专业Java JDK - 第5版》是一本专为Java开发者深度解析JDK的权威指南,其第五版在2005年出版,旨在帮助读者掌握Java开发的核心技术和最新进展。这本书详细介绍了Java语言的各个方面,涵盖了从基础语法到高级特性的...
《算法2021——C#编程视角的深度探索》 在信息技术日益发展的今天,算法作为计算机科学的基础,其重要性不言而喻。本文将深入探讨2021年背景下,C#语言在实现算法过程中的应用和相关知识点。"algorithms2021"这一...
通过利用TypeScript这种强大的编程语言,开发者可以构建出丰富多样的剧情线,带给SS13玩家更深度的游戏沉浸感。 TypeScript是JavaScript的一个超集,它引入了静态类型系统和面向对象的特性,如接口、类和泛型,使得...
《算法4th-c-cpp》项目是针对计算机科学领域经典的《算法导论》第四版的代码实现,最初采用C语言编写,随着项目的进展,计划逐渐转换为C++语言。这个项目旨在帮助读者深入理解并实践书中的算法,通过实际编程加深对...
55. **避免过度泛型**:泛型的使用应适度,避免造成不必要的复杂性和性能开销。 56. **自我验证**:设计时应考虑到自我验证的机制,确保数据的一致性和完整性。 57. **运动的统一**:在设计时,应保持一致的运动或...
**mupen64plus-ae-meta 深度解析** `mupen64plus-ae-meta` 是一个专门针对 `mupen64plus-ae` 的用户贡献元信息存储库。这个项目旨在收集、整理和维护与 `mupen64plus-ae` 相关的各种配置信息、游戏兼容性列表、优化...
描述中提到,"我的解决方案存储库,用于应对HackerRank,uHunt,CodeForces和其他地方的一些挑战",这表明作者不仅在LeetCode上实践,还可能在其他竞争性编程平台上如uHunt(一个跟踪你在HackerRank进展的工具)和...