在博客上看到JAVA中反射中有如下功能:Java反射机制提供如下功能: 在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判段任意一个类所具有的成员变量和方法
在运行时调用任一个对象的方法
在运行时创建新类对象
那么,疑问如下:
1 运行时判断任意一个对象所属的类
在软件中可以体现在哪些方面?个人的理解是防止对象初始化错误(说错了别笑话~~)2 运行时构造任意一个类的对象
任意一个类的对象完全可以NEW出来。与NEW操作相比,反射的优势体现在哪里?有没有劣势?3 运行时判断/调用任意一个类所具有的成员变量和方法
疑问同第2个。4 运行时创建新类对象
这个没看明白是什么意思。请指教。
在运行时构造任意一个类的对象
在运行时判段任意一个类所具有的成员变量和方法
在运行时调用任一个对象的方法
在运行时创建新类对象
那么,疑问如下:
1 运行时判断任意一个对象所属的类
在软件中可以体现在哪些方面?个人的理解是防止对象初始化错误(说错了别笑话~~)2 运行时构造任意一个类的对象
任意一个类的对象完全可以NEW出来。与NEW操作相比,反射的优势体现在哪里?有没有劣势?3 运行时判断/调用任意一个类所具有的成员变量和方法
疑问同第2个。4 运行时创建新类对象
这个没看明白是什么意思。请指教。
解决方案 »
- 关于private是否被继承求解..
- 如何反射忽略某一属性
- 关于thinking in EnterpriseJava
- 若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。为什么只有数值右端的低5位才有用?
- jFileChooser文件选择器问题
- 一个执行SQL语句的问题!
- 菜单弹出被遮盖
- 求比较好的JAVA反编译软件
- 弄了一天了!!!大家帮帮忙阿,高分!!!!
- java怎么看版本号?
- 关于java程序和windows服务
- jxl读excel文件出错,jxl.read.biff.BiffException: Unable to recognize OLE stream
任意一个类的对象完全可以NEW出来。与NEW操作相比,反射的优势体现在哪里?有没有劣势?很明显,new需要人显示的去编写代码,而使用反射则是一种自动化的工作,例如
使用new: public Object function(String path){
if(path.equals("java.io.File")){
return new File("xxx");
}else if(path.equals("java.lang.Intager")){
return new Intager(0);
......}
使用反射 : public Object function(String path){
try{ return Class.forNmae(“xx”).Instance /*没用IDE,手工编写,调用方法可能不对 */
}catch(Exception e){
.....
}
}
很显然后者更简单,可扩张性更好。
3.运行时判断/调用任意一个类所具有的成员变量和方法
疑问同第2个。
这个在写框架中有比较广泛的使用,比如Hibernate。 Hibernate是如何将SQL查询出来的结果放进对象中的呢,其实就是调用pojo中的set方法,然而,hibernate不会知道你有多少属性,也不会知道有多少的set方法,这里就是使用反射回去到类中的方法,将执行相关的set方法将结果保存进对象。4 运行时创建新类对象
这个没看明白是什么意思。请指教。
这个我的理解如2,在运行时创建对象。