更深层的反射
来源:互联网 发布:手机怎么清除网络劫持 编辑:程序博客网 时间:2024/04/30 08:03
摘自:《Java解惑》谜题80:更深层的反射 首先,看一段程序: 它的输出会是什么呢? 结果是: Exception in thread "main" java.lang.InstantiationException: test.Outer$Inner at java.lang.Class.newInstance0(Class.java:340) at java.lang.Class.newInstance(Class.java:308) at test.Outer.greet(Outer.java:25) at test.Outer.main(Outer.java:35) 2、Inner实例并不需要一个外围的Outer实例,所以可以将Inner类型声明为静态的。除非你确实是需要一个外围实例,否则你应该优先使用静态成员类而不是非静态成员类。 3、考虑到从Java程序到class文件的映射的复杂度,请避免使用发射来实例化内部类。 修正办法: 1、直接创建对象,而不是使用Class.newInstance。例如: Inner inner = new Inner(); System.out.println(inner); 2、使用java.lang.reflect.Constructor。 Constructor c = Inner.class.getConstructor(Outer.class); System.out.println(c.newInstance(this)); 3、将Inner声明为静态成员类。 public static class Inner{...}
- 更深层的反射
- 如何更深层的识别用户的需求
- 更深层探究 Mozilla Firefox 扩展和插件的区别
- AsynTask更深的理解
- 队指针的更深层理解——free后发生了什么
- 原创技术分析:更深层探究 Mozilla Firefox 扩展和插件的区别
- 多“维”优化——前端高并发策略的更深层思考
- 技术,继续,更深入的
- 更深层次的理解Context
- 更深层次的理解Context
- 更深层次的理解Context
- 泛型,反射,公共dao层的使用
- 7层登录--反射的神奇所在
- UICollectionView的更深层次的用法
- C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)
- C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)
- 对模式更深次的理解
- flash里的字体更深研究
- reactos操作系统实现(112)
- API函数大全
- 用Perl从oracle导出百万级数据到excel
- ibatis 缓存
- Visual Studio 2010 Beta 2 下载地址
- 更深层的反射
- update
- C++ Builder下三种UDP通信实现方法的比较
- userList.jsp
- [mircroftt][sqlserver 2000 driver for jdbc][sqlserver]对象名
- DA9034驱动程序阅读笔记(1)
- 自上而下,自下而上
- oracle实例名,数据库名,服务名等概念区别与联系
- MySQL InnoDB 存储引擎 基本参数