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

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

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

  • 本节总结:<br> 1.对象,类,实例对象的区别。对象包含类,通俗点说,你创建一student类,那么这个类就是对象。当然对象还包括类的方法(万事万物皆对象);对象是一个抽象的概念(或者说范围),比如学生类,表示的是学生这个群体,但是如果想要使用类做点事情(使用类的方法),那必须先明确找出一个学生A来做,学生A即实例对象。<br> 2.学生类是一个类,学生A是学生类的实例对象,而学生类是Class类的实例对象。<br> 3.创建学生类的对象实例:student stu = new student();<br> 创建Class类的学生对象实例:第一种方法:Class c1=student.class;<br> 第二种方法:Class c2=stu.getClass();<br> 第三种方法:Class c3=Class.forName("类的全路径"); 4.使用Class类的学生对象实例来创建学生对象实例:Student stu=(Student)c1.newInstance();//c1,c2,c3效果一样。 5.官方描述:c1,c2,c3被称为student类的类类型。
    查看全部
    0 采集 收起 来源:Class类的使用

    2018-03-22

  • /* * c1==c2结果返回true说明编译之后集合的泛型是去泛型化的, * java中的集合的泛型,是防止错误输入的,只在编译剪短有效 * 绕过编译就无效了 * 验证:我们可以通过方法的放射来操作,绕过编译。 * */
    查看全部
  • 通过反射调用方法: 先创建这个方法所在类的实例对象(使用Class) 然后通过实例对象来访问该类的是方法, A a= new A(); Class c=a.getclass(); Method m = c.getMethod("print", int.class,int.class);//后面的参数为Print方法的参数列表 m.invoke(a1,10,10);
    查看全部
  • 什么是反射: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
    查看全部
  • 想获得类的信息先得到类的类类型Class c=object.getClass();,再根据想要的比如Field [] fs=c.getDeclaredFields();获得数组,再将其进行处理即可
    查看全部
  • 万事万物皆对象,类是Class的实例对象 方法是Mothed的实例对象。 通过Method类的一些方法可以获取实例对象方法的基本信息。
    查看全部
  • 动态加载类:<br> 加载分为动态加载类和静态加载类,<br> 动态加载类是指:程序读到哪,加载到哪,与下面程序无关。一般是在运行时加载<br> 静态加载类是指:程序一次性加载完,如果程序有错,则加载失败。一般是在编译时加载<br> <br> 对于功能性的类,应该使用动态加载类,提高系统的复用性。 如何动态加载类? 使用Class.forName("类的全称"); Class c=Class.forName("....."); c.newInstance();
    查看全部
  • 本节总结:<br> 1.对象,类,实例对象的区别。对象包含类,通俗点说,你创建一student类,那么这个类就是对象。当然对象还包括类的方法(万事万物皆对象);对象是一个抽象的概念(或者说范围),比如学生类,表示的是学生这个群体,但是如果想要使用类做点事情(使用类的方法),那必须先明确找出一个学生A来做,学生A即实例对象。<br> 2.学生类是一个类,学生A是学生类的实例对象,而学生类是Class类的实例对象。<br> 3.创建学生类的对象实例:student stu = new student();<br> 创建Class类的学生对象实例:第一种方法:Class c1=student.class;<br> 第二种方法:Class c2=stu.getClass();<br> 第三种方法:Class c3=Class.forName("类的全路径"); 4.使用Class类的学生对象实例来创建学生对象实例:Student stu=(Student)c1.newInstance();//c1,c2,c3效果一样。 5.官方描述:c1,c2,c3被称为student类的类类型。
    查看全部
    0 采集 收起 来源:Class类的使用

    2018-03-22

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

    2018-03-22

  • 获取方法
    查看全部

举报

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

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