public class Test
{
public void func()
{
System.out.println("func");
}
public static void main(String args[]) throws Exception
{
Test obj = new Test ();
//下面这行可以成功编译
((Test)obj).getClass().newInstance().func();
// Class<? extends Test> -- (Test)obj).getClass()
//<? extends Test>(即为Test) -- ((Test)obj).getClass().newInstance()
//下面这两行无法通过编译
/*Class c = ((Test)obj).getClass();
c.newInstance().func();
* 将返回值为Class<? extends Test>类型的(Test)obj).getClass()
* 强制转换成了Class类型(默认是Class<?>)
* Object -- c.newInstance()
*/
//解决方案 1:
Class<? extends Test> c = ((Test)obj).getClass();
c.newInstance().func();
//解决方案 2:
Class c2 = ((Test)obj).getClass();
((Test) c2.newInstance()).func();
}
}
分享到:
相关推荐
- 在Java中,由于类型擦除,反射无法直接获取泛型的实际类型。不过,可以使用ParameterizedType接口来处理泛型信息,但需要在获取时特别处理。 6. **注解的反射**: - 注解提供了一种元数据的方式,可以在运行时...
Java编程语言是软件开发领域的重要工具,尤其在企业级应用中广泛应用。"达内java易错题集"可能是一个专门针对学习者或开发者设计的资源,旨在帮助他们识别并纠正编程过程中常见的错误,提高编程技能和解决问题的能力...
本篇将基于“Java解惑”这一主题,详细探讨Java中的常见问题、易错点以及需要注意的细节。 1. **内存管理与垃圾回收** - Java的自动内存管理机制是通过垃圾回收(Garbage Collection, GC)来实现的。理解如何工作...
试题讲解通常会包含解题思路、陷阱解析以及易错点提醒,有助于考生巩固知识,提升应试技巧。 总之,OCJP认证是对Java开发者技能的一种权威认可,备考过程中通过详尽的试题讲解和实践训练,不仅可以提高考试通过率,...
它涵盖了Java的基础知识、常见疑惑点以及易错知识点,旨在帮助Java初学者和进阶者解决实际编程中的困扰。 1. **基础概念解析**: - 类与对象:Java是一种面向对象的语言,理解类的定义、对象的创建及其生命周期至...
9. **反射机制**:通过Class类获取类的信息,动态创建对象,调用方法和修改字段值,理解反射在实际开发中的应用。 10. **JVM优化**:了解JVM的内存结构,理解如何进行性能调优,包括JVM参数设置、类加载机制、垃圾...
这份"java-foundation.rar_foundation"文件显然是针对Java面试中常见的基础知识和易错点进行总结的文档,旨在帮助求职者加强基础,避免在面试中犯错。下面,我们将详细探讨Java基础中的关键知识点。 1. **Java语法...
这份"Java经典复习资料"集合了Java学习过程中的关键知识点,旨在帮助开发者巩固基础,理解和掌握Java的重难点以及常见易错点。以下是这些复习题可能涵盖的一些核心主题: 1. **Java基础**:包括变量、数据类型、...