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

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

Cedar
难度入门
时长 1小时20分
  • 任何一个类都是Class的实例对象,这个实例对象有3种表示方式 1.第一种 [实际在告诉我们任何一个类都有一个隐含的静态成员变量class] Class c1 = 类名.class 2.第二种 [已经知道该类的对象,通过getClass方法] Foo foo1 = new Foo(); Class c2 = foo1.getClass(); 3.第三种(动态加载类) [该方法需要捕获异常] Class c3 = null; c3 = Class.forName("com.imooc.reflect.Foo"); //类的全称 ----------------------------------------------------------------- c1,c2表示Foo类的类类型 万事万物皆对象, 类也是对象,是Class类的实例对象 这个对象我们称为该类的类类型 ---------------------------------------- c1 == c2 =====>true c2 == c3 =====>true 不管c1,c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象 同时!我们还可以用类类型(c1,c2,c3)来创建该类的实例对象 方法如下:[需要捕获异常] Foo foo = (Foo)c1.newInstance();//需要有无参数的构造方法
    查看全部
    0 采集 收起 来源:Class类的使用

    2018-03-22

  • 【类类型的含义:Foo类本身是Class类的实例对象=>[变量名为c1/c2],而Foo类本身又有实例对象foo1,所以c1,c2就为类类型】 class类里面有一个private Class(){}私有方法,所以类的实例不能new出来,只能有以下3种方式表示; 1.Class c1 = Foo.class;//实际在告诉我们,任何一个类都有一个隐含的静态成员变量class 2.已结知道该类的对象(实例化对象)通过getClass方法可获得 Foo foo1 = new Foo(); Class c2 = foo1.getClass(); 3.class c3 = class.forName("类的全称"); ---------------------------------------------- 类是对象,类是java.lang.Class类的实例对象
    查看全部
    1 采集 收起 来源:Class类的使用

    2018-03-22

  • int i = 5[普通数据类型] 静态的东西属于类而不属于对象
    查看全部
    0 采集 收起 来源:Class类的使用

    2016-11-29

  • 1、静态加载类,是编译时刻加载;动态加载类,是运行时刻加载 2、new创建对象:是静态加载类,在编译时刻就需要加载所有的【可能使用到的类】。有一个类有问题(如不存在),都不能通过编译,会报错。 3、Class.forName()通过动态加载类,可以用到一个类时,才进行加载。 【功能性的类尽量使用动态加载,并对新添的类实现功能性接口(标准),这样就不用重新编译】 1.Clss.forName("类的全称") 不仅表示了类的类类型,还代表了动态加载类 请大家区分编译、运行 编译时刻加载类是静态加载类,运行时刻加载类是动态加载类
    查看全部
  • new创建对象 是静态加载类 在编译时刻就需要加载所有可能使用到的类 动态加载类可以用哪个就加载哪个 解决静态加载的问题
    查看全部
  • Class.forName("类的全称")不仅表示类的类类型,还代表了动态加载类; 编译时刻加载类是静态加载类,运行时刻加载类是动态加载类; new创建对象是静态加载类,在编译时刻就需要加载所有可能使用到的类;
    查看全部
  • 1.静态的成员,普通数据类型不是对象 2.类是java.lang.Class类的实例对象,这个对象表示这个类的类类型(class type) Class类的构造器是private的,所以我们不能创建Class的对象,只能由JVM来创建Class的对象。 (1)Class c1 = 类名.class;(说明每个类(对象)都有一个隐含的静态成员变量class) (2)Class c2 = 类的实例对象.getClass(); (3)Class c3 = Class.forName(类名); 一个类只有一个类类型(class type) 4.可以通过类类型来获取一个类的实例对象: c1.newInstance() c1是A类的类类型,创建出A类的对象(此处c1为Foo的类类型,创建出Foo类的一个实例对象),因此根据得出的结果需要做强制类型转换(不加那个 Foo 类型是可以的  但是编译器会报警告  提示这里 等号两边的 类型不一样) 类名 类的实例对象名称 = (类名)c1.newInstance();前提是该类有无参构造方法。
    查看全部
    0 采集 收起 来源:Class类的使用

    2016-11-29

  • 动态
    查看全部
  • 反射的操作都是编译之后的操作;就是运行阶段 java中集合的泛型是防止错误输入的;只在编译阶段有效,只要绕过编译就无效
    查看全部
  • getMethod获取的是public方法,getDelcaredMethod获取自己声明的方法 Method m =c.getMethod(methodName,paramtypes);//paramtypes可以用数组的形式 表示new Class[] 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);
    查看全部
  • 成员变量是java.lang.reflect.Field的对象 Field[] fs = c.getFields()//获取所有public的成员变量Field[]信息 c.getDeclaredFields()//获取的是该类自己声明的成员变量信息 field.getType()//获得成员类型的类类型 field.getName()//获得成员的名称 构造函数是java.lang.Constructor类的对象 Class.getConstructor()//获得Constructor[]所有公有构造方法信息 getDeclaredConstructors()//获取自己声明的构造方法 Constructor.getName()//获取构造函数的名字 Constructor.getParameterTypes()//获取构造函数的参数列表,得到的是参数列表的类类型
    查看全部
  • Method类,方法对象, 一个成员方法就是一个Method对象 getMethods()方法获取的是所有public函数,包括父类继承而来的 getDeclaredMethods()获取的是所有该类自己声明的方法,不问访问权限 Method[] ms=c.getMethods();//c.getDeclaredMethods(); //得到方法的返回值类型的类类型 Class returnType=ms[i].getReturnType(); //获取参数类型-->得到的是参数列表的类型的类类型 Class[] paramType=ms[i].getParameterTypes();
    查看全部
  • Class.forName("类的全称")不仅表示类的类类型,还代表了动态加载类; 编译时刻加载类是静态加载类,运行时刻加载类是动态加载类; new创建对象是静态加载类,在编译时刻就需要加载所有可能使用到的类;
    查看全部
  • 1.静态的成员,普通数据类型不是对象 2.类是java.land.Class类的实例对象,这个对象表示这个类的类类型(class type) (1)Class c1 = 类名.class;(说明每个类都有一个隐含的静态成变量class) (2)Class c2 = 类的实例对象.getClass(); (3)Class c3 = Class.forName(类名); 一个类只有一个类类型(class type) 4.可以通过类类型来获取一个类的实例对象:类名 类的实例对象名称 = (类名)c1.newInstance();前提是该类有无参构造方法。
    查看全部
    0 采集 收起 来源:Class类的使用

    2016-11-28

  • 动态加载
    查看全部

举报

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

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