黑马程序员技术交流社区
标题:
有关反射的一些疑惑
[打印本页]
作者:
闾丘日月
时间:
2012-5-23 14:55
标题:
有关反射的一些疑惑
听完张老师的反射讲解以后,自以为对万物皆对象又多一层理解,但是张老师的反射中没有提到静态代码块和构造代码块的问题。
于是自己去查api,也没有发现类似的方法能够捕捉代码块的,除了Class,Method,Field和布尔以外有几个不太懂的方法,但是返回类型好像都不是我想要的,于是我百度,关键词构造代码块 反射,出来一堆乱七八糟的,到这里我基本肯定一个结论,java中并没有一个对象是用来表示代码块的,这是为啥?
我自己想到一个解释,因为最初我是想着,代码块中也会定义static变量存放在静态区中,但是我测试的时候编译不通过,就是说编译器不允许代码块访问静态区,它只能操作栈与堆区的数据,因此java觉得代码块足够简单,所以不用用一个专门的对象来表示它。
这个也就勉强自己骗一下自己,感觉还是和拿出来大家一起讨论一下的好。。
作者:
闾丘日月
时间:
2012-5-23 15:02
另外,求一份String类的练习题,能包含String类的基本和高级用法的练习,网上找的怕没有针对性
作者:
小小企鹅
时间:
2012-5-23 15:20
本帖最后由 栗培文 于 2012-5-23 16:44 编辑
Class<?> sp = null;
Constructor<?> cons[] = sp.getConstructors();//取得构造函数
obj = cons[0].newInstance();//创建新实例,如果存在构造代码块,构造代码块先执行,再执行构造函数
method = sp.getMethod("print");//取得print方法
method.invoke(obj);
在方法中定义的变量是局部变量,定义不了static变量的,可以把方法用static修饰。
作者:
闾丘日月
时间:
2012-5-23 16:00
楼上的我不太明白。
好像就是执行了一个构造函数和一个print方法,是我的问题描述有问题么?
我的意思是为什么代码块在java中不搞个对象来表示它,因为它足够简单?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2