为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
反射——Java高级开发必须懂的_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

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

Cedar
难度入门
时长 1小时20分
  • /** * 成员变量也是对象 * 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接口
    查看全部
  • Class.forName("类的全称") ·不仅表示了类的类类型,还代表了动态加载类 ·请大家区分编译、运行 ·编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 --> new创建对象:是静态加载类,在编译时刻就需要加载所有的【可能使用到的类】。有一个类有问题(如不存在),都不能通过编译,会报错。 --> Class.forName()通过动态加载类,可以用到一个类时,才进行加载。 【功能性的类尽量使用动态加载,并对新添的类实现功能性接口(标准),这样就不用重新编译】
    查看全部
  • Class类. Class.forName("类的全称")
    查看全部
  • 关于Class类
    查看全部
    0 采集 收起 来源:Class类的使用

    2016-05-25

  • 1)在面向对象的世界里,万事万物皆对象。 java语言中,静态的成员、普通数据类型是不是对象呢?类是谁的对象呢? ...类是对象,类是java.lang.Class类的实例对象 2)这个对象到底如何表示 有三种表示方式, 以class Foo为例,Foo这个类 也是一个实例对象,Class类的实例对象,如何表示呢? 【方式一】 Class c1 = Foo.class; //第一种表示方式 --->实际在告诉我们任何一个类都有一个隐含的静态成员变量 【方式二】 Class c2 = foo1.getClass(); //第二种表达方式,已经知道该类的对象通过getClass方法 /*官网 c1,c2表示了Foo类的类类型(class type) * 万事万物皆对象, * 类也是对象,是class类的实例对象 * 这个对象我们成为该类的类类型 * */ ##不管c1 or c2 都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象 System.out.println(c1 == c2); //输出结果为true 【方式三】 c3 = Class.forName("com.imooc.reflect.Foo"); (要try..catch捕获异常) ☞通过类的类类型创建该类的对象实例 我们完全可以通过类的类类型创建该类的对象实例 --->通过c1或c2或c3创建Foo的实例对象 !!前提要有无参数的构造方法 Foo foo = (Foo)c1.newInstance();
    查看全部
    0 采集 收起 来源:Class类的使用

    2018-03-22

  • 类是对象,它是java.lang.Class的对象
    查看全部
    0 采集 收起 来源:Class类的使用

    2016-05-24

  • 方法的反射 1获取类类型Class c=a1.getClass(); 2获取方法Method b=c.getMethod(); 3方法的反射(方法的调用)b.invoke();
    查看全部
  • 类类型的创建 Class c=Foo.class//Foo为一个类 Class c=fool.getClass()//fool为Foo类的一个对象 Class c=Class.forName();
    查看全部
    0 采集 收起 来源:Class类的使用

    2016-05-23

举报

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

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