A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package cn.itcast_04;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class ReflectDemo {
        public static void main(String[] args) throws Exception {
                // 获取字节码文件对象
                Class c = Class.forName("cn.itcast_01.Person");

                // 获取所有的方法
                // Method[] methods = c.getMethods(); // 获取自己的包括父亲的公共方法
                // Method[] methods = c.getDeclaredMethods(); // 获取自己的所有的方法
                // for (Method method : methods) {
                // System.out.println(method);
                // }

                Constructor con = c.getConstructor();
                Object obj = con.newInstance();

                /*
                 * Person p = new Person(); p.show();
                 */

                // 获取单个方法并使用
                // public void show()
                // public Method getMethod(String name,Class<?>... parameterTypes)
                // 第一个参数表示的方法名,第二个参数表示的是方法的参数的class类型
                Method m1 = c.getMethod("show");
                // obj.m1(); // 错误
                // public Object invoke(Object obj,Object... args)
                // 返回值是Object接收,第一个参数表示对象是谁,第二参数表示调用该方法的实际参数
                m1.invoke(obj); // 调用obj对象的m1方法
}

学习刘意老师的视频的时候有点小疑问,创建对象Object obj = con.newInstance();返回的是object类型
再调方法m1.invoke(obj); 不用遵循编译看父类的原则吗

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马