为了账号安全,请及时绑定邮箱和手机立即绑定

反射——Java高级开发必须懂的

难度入门
时长 1小时20分
学习人数
综合评分9.67
759人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • class A{ public void print(){ System.out.println("helloworld");} public void print(int a,int b){ System.out.println(a+b);} public void print(String a,String b){ System.out.println(a.toUpperCase()+","+b.toLowerCase());}}
    查看全部
  • //要获取print(int ,int )方法 1.要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型 A a1 = new A(); Class c = a1.getClass(); 2.获取方法 名称和参数列表来决定 * getMethod获取的是public的方法 * getDelcaredMethod自己声明的方法 try {//Method m = c.getMethod("print", new Class[]{int.class,int.class}); Method m = c.getMethod("print", int.class,int.class); //方法的反射操作 //a1.print(10, 20);方法的反射操作是用m对象来进行方法调用 和a1.print调用的效果完全相同 //方法如果没有返回值返回null,有返回值返回具体的返回值 //Object o = m.invoke(a1,new Object[]{10,20}); Object o = m.invoke(a1, 10,20); //获取方法print(String,String) Method m1 = c.getMethod("print",String.class,String.class); //用方法进行反射操作 //a1.print("hello", "WORLD"); o = m1.invoke(a1, "hello","WORLD"); // Method m2 = c.getMethod("print", new Class[]{}); Method m2 = c.getMethod("print"); // m2.invoke(a1, new Object[]{}); m2.invoke(a1); } catch (Exception e) { e.printStackTrace();} }}
    查看全部
  • 方法的反射
    查看全部
  • java中集合的泛型是防止输入错误的,只有在编译阶段有效,绕过了编译就无效了 反射的操作都是在编译之后的操作
    查看全部
  • 方法的反射
    查看全部
  • 获取类的方法信息
    查看全部
  • 获取参数类型的代码
    查看全部
  • /** * 成员变量也是对象 * java.lang.reflect.Field * Field类封装了关于成员变量的操作 * getFields()方法获取的是所有public的成员变量 * getDeclaredFields()获取的是所有自定义的成员变量 */ /* * 构造函数也是对象 * java.lang.Constructor封装了对构造函数的信息 * getConstructors()获取所有public的构造函数 * getDeclaredConstructors()获取所有的构造函数信息 */
    查看全部
  • @ClassUtil.java——(下) /** * 打印对象的构造函数的信息 * @param obj */ public static void printConMessage(Object obj){ Class c = obj.getClass(); /* * 构造函数也是对象 * java.lang. Constructor中封装了构造函数的信息 * getConstructors获取所有的public的构造函数 * getDeclaredConstructors得到所有的构造函数 */ //Constructor[] cs = c.getConstructors(); Constructor[] cs = c.getDeclaredConstructors(); for (Constructor constructor : cs) { System.out.print(constructor.getName()+"("); //获取构造函数的参数列表--->得到的是参数列表的类类型 Class[] paramTypes = constructor.getParameterTypes(); for (Class class1 : paramTypes) { System.out.print(class1.getName()+","); } System.out.println(")"); } } }
    查看全部
  • 类型的说明
    查看全部
  • 测试类代码
    查看全部
  • ClassUtil类代码: //首先要获取类的类类型 Class c = obj.getClass(); System.out.println("类的类名称是:"+c.getName()); /** * Method类,方法对象 * 一个成员方法就是一个method对象 * getMethods()获得的就是所有public的方法,包括从父类继承而来的 * getDeclaredMethods()是获取该类自己声明的所有方法,不考虑访问权限 */ Method[] m = c.getMethods(); for(int i =0;i<m.length;i++) { //获得方法的返回值类型的类类型 Class returntype = m[i].getReturnType(); System.out.print(returntype.getName()+" "); //获得方法的名称 System.out.print(m[i].getName()+"("); //获取方法的参数类型-->得到的是参数列表的类型的类类型 Class[] paramstype = m[i].getParameterTypes(); for (Class class1 : paramstype) { System.out.print(class1.getName()+","); } System.out.println(")"); }
    查看全部
  • Class.forName("类的全称")
    查看全部
  • OfficeBetter类
    查看全部
  • Word类实现OfficeAble接口
    查看全部

举报

0/150
提交
取消
课程须知
童鞋们,学习本课程前需要熟悉Java面向对象的思想,并能掌握Java IO输入输出流、集合和泛型等知识。可参考慕课网Java入门的一、二、三季以及我的文件我做主——Java IO流课程。
老师告诉你能学到什么?
1、能够理解并应用反射机制。 2、能够了解反射机制在集合泛型中的应用。 3、有利于更好的学习框架等Java高级技术。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!