黑马程序员技术交流社区
标题:
反射的细节问题
[打印本页]
作者:
陈希然
时间:
2011-9-24 14:29
标题:
反射的细节问题
大家学反射都知道,当我们利用反射操作类里面的成员时,为什么操作实例成员还要要传递一个对象给它,而静态成员就不需要传递一个对象给它 ?
如:
public class BirdMan {
public static void cry() {
System.out.println("I'm crying");
}
public void shout() {
System.out.println("I'm shouting");
}
public static void main(String[] args) throws Exception {
Class.forName("cn.itcast.draft.BirdMan").getMethod("cry", null).invoke(null, null) ; //invoke方法没有传递对象
BirdMan bm = new BirdMan() ;
Class.forName("cn.itcast.draft.BirdMan").getMethod("shout", null).invoke(bm, null) ; //invoke方法传递了对象
}
}
作者:
匿名
时间:
2011-9-24 15:16
1:文档里面有这样一句话是这样说的@param obj (就是第一个参数) the object the underlying method is invoked from,意思invoke这个方法里的第一个参数是从自身上发起的。
2:静态属性和方法属于类方法,加载类后,就已经存在静态属性和方法,static方法可以不创建实例就能用的
3:JVM把静态方法集中放在某个地方,当要执行某个静态方法,JVM通过类型地址和方法地址在该区域中查找。
所以调用静态方法是不用new的,实例方法就得创建实例
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2