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

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

Cedar
难度入门
时长 1小时20分
  • 所有类都是对象,class类的对象。只有静态产量和基本数据类型不是对象
    查看全部
    0 采集 收起 来源:Class类的使用

    2016-06-23

  • //获取类的类型(Class Type)<br> 知道类名:Class c1 = Foo.class;<br> 知道对象:Class c2 = foo1.getClass(); 知道类路径:Class c3 = Class.forName("com.imooc.reflect.Foo");
    查看全部
    0 采集 收起 来源:Class类的使用

    2018-03-22

  • 本例通过list集合来说明反射操作是去泛型化的,首先演示了两个list集合,list1是不带泛型的,list2是带者string类的泛型,通过list2.add()方法往集合中添加int类型时,编译器报错,但是list1.getClass()返回值与list2返回值同时指向同一个对象,说明list1以及list2的泛型只在编译期有效,在运行期间字节码是去泛型化的。接下来演示了如何去泛型化,还是通过反射getMethod()传入list的“add”方法以及指定参数类型为Object,然后执行方法的invoke()来操作list2,参数为int类型的10,我们看到执行之后,10就添加进list2中了,这样就绕过了泛型,list2中就有了Int 类型。
    查看全部
  • getClass()得到类的实例之后,调用getMethod方法,Method的实例去接收返回值,然后调用method.invoke()方法去执行实例对象的真正方法,注意invoke的两个参数(第一个参数是反向操作的实例(m),第二个对象是方法接收的参数(10,20)),在这里等同于 m.print(10,20)。
    查看全部
  • 平常使用new创建一个对象的实例属于静态加载,在编译期间要加载所有类的实例,一旦一个类没有经过编译就会出现类找不到的问题,这个问题使用动态加载就可以解决,通过Class.forName(”类的全路径名”)就可以加载类,返回的是加载类的类类型,通过该类的对象newInstance方法,就可以获得这个对象的实例,返回的是这个实例对象的类型,一般使用接口,返回接口具有可扩展性。
    查看全部
  • class c1= Foo.class; class c2 =foo.getClass() class c3 = Class.forName(com.xz.Foo)
    查看全部
    0 采集 收起 来源:Class类的使用

    2016-06-23

  • 类对象
    查看全部
    0 采集 收起 来源:Class类的使用

    2016-06-22

  • 第三种
    查看全部
    0 采集 收起 来源:Class类的使用

    2016-06-22

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

    2016-06-22

  • Class类对象的三种获得方式 ①Foo.class ②foo.getClass ③Class.forName
    查看全部
    0 采集 收起 来源:Class类的使用

    2016-06-21

  • 通过反射,获取成员变量的信息
    查看全部
  • 1.方法的反射操作 1).如何获取某个方法:方法的名称和方法的参数列表才能唯一决定一个方法 2).方法的反射操作:method.invoke(对象,参数列表); Class A{ Public void print(int a,int b){ System.out.print(a+b); } Public void print(String a,String b){ System.out.print(a.toUpperCase()+b.toLowerCase()); } } //要获取Print(int ,int) 方法 1:要获取一个方法就是获取类的信息,获取类的信息首先要获取类的 A a1=new A(); Class c=a1.getClass(); 2:获取方法 名称和参数列表来决定 getMethod 获取的是Public的方法 Method m=c.getMethod("print",int.class,int.class); //方法的反射操作 是用m对象来进行方法调用 //方法如果没有返回值返回null,有返回值返回具体的返回值,默认的是Object 需要进行类型转换 Object obj= m.invoke(a1,new Object[]{10,20});
    查看全部
  • Class c1=int.class;//c1是int类的类类型 Class c2=String.class;//c2是String类的类类型 Class c3=void.class;//c3是void关键字类的类类型 1.在面向对象的世界里,万事万物皆对象。 类是对象,方法也是对象 等等 2. 定义类Class Foo{} 通过类的实例化获取类的实例化类对象----如Foo foo1=new Foo(); 获取类的类型的方法如下: 类名.class;----如:Class c1=Foo.class; 类对象.getClass();-----如:Class c2=foo1.getClass(); Class.forName(类的全称);----如:Class c3=Class.forName(); 3.获取类的全名 Class c=obj.getClass();//c是obj类的类类型 //获取类的名称 c.getName; 4.方法也是一个对象,方法是Method的实例化对象 Method[] ms=c.getMethods(); for(int i=0;i<ms.length;i++){ //得到方法的返回值类型的类类型 Class returnType=ms[i].getReturnType(); //得到方法的名称 ms[i].getName(); } 5.成员变量也是对象,是java.lang.reflect.Field的实例化对象。 Field类封装了关于成员变量的操作。 getField()方法获取的是所有的public的成员变量的信息。 Field field=c.getField(); //得到成员变量类的类类型 Class fieldType=field.getType(); //得到成员变量的名称 field.getName(); 6.构造函数也是对象,构造函数是java.lang.Constructor 的实例化对象 getConstructors()获取所有的public的构造函数 getDeclaredConstructors()获得所有的构造函数
    查看全部
    0 采集 收起 来源:Class类的使用

    2018-03-22

  • new 创建对象,是静态加载类,在编译时刻就需要加载所有的可能使用到的类
    查看全部
  • 如何去获得方法对象,然后用方法对象进行反射操作
    查看全部

举报

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

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