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

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

Cedar
难度入门
时长 1小时20分
  • Java中 数据类型、静态类不是面向对象的。
    查看全部
    0 采集 收起 来源:Class类的使用

    2015-09-06

  • 基本数据类型,静态成员不是对象
    查看全部
    0 采集 收起 来源:Class类的使用

    2015-09-05

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

    2015-09-02

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

    2015-09-02

  • 得到类的类型有三种方式 类名.class Class.forName(全类名) 类的实例.getClass() 类类型.newInstance() Method 使用Class下的方法 getMethods公共方法 getDeclearedMethods所有声明的方法
    查看全部
  • 反射--java高级开发必须懂的 2-1 动态加载类,这个章节有必要思考、琢磨、学习
    查看全部
  • java的集合的泛型在编译后是去泛型化的 java中集合的泛型,是防止错误的输入,只在编译阶段有效,绕过编译阶段就无效了。 比如: ArrayList list = new ArrayList(); ArrayList<String> list1 = new ArrayList<String>(); list1.add("hello"); //正确 //list.add(20); //编译出错,不是String类型 Class c1 = list.getClass(); Class c2 = list1.getClass(); System.out.println(c1 == c2);//输出true; //用方法映射来验证集合编译后的去泛型化 try{ Method m = c2.getMethod("add", Object.class); m.invoke(list1, 20);//在这里能够把int型20加到ArrayList<String>集合中,因为映射是在运行时加载类的 System.out.println(list1);//输出:[]hello,20] } catch(Exception e){ }
    查看全部
  • 1、java任何类都是java.lang.Class的实例对象,这个对象(类)称为该类的类类型。 2、java.lang.Class类的构造函数是private的,因此不能通过new来创建实例对象。有三种方法可获取java.lang.Class类: 2.1、所有类均有一个静态的成员变量class,可通过该静态成员变量获取Class类,如MyClass.class返回的就是java.lang.Class。 2.2、通过类的实例化对象的成员函数getClass可获取java.lang.Class类,如(myClass是MyClass的一个实例对象)myClass.getClass()返回java.lang.Class。 2.3、可通过java.lang.Class的成员函数forName(String className)来获取java.lang.Class类,如Class.forName("mypackage.MyClass")返回的就是java.lang.Class类型了。 3、可通过类的类类型创建该类的实例对象,如Class c = MyClass.class; MyClass myClass = c.newInstance();注意:该用法需要类MyClass类有无参数构造方法。
    查看全部
    0 采集 收起 来源:Class类的使用

    2018-03-22

  • 反射的升华操作 泛型 通过class,method了解泛型的本质 编译之后集合的泛型是去泛型化的 java中集合的泛型,是防止错误输入的,只在编译阶段有效,绕过编译无效 验证:通过方法的反射来操作,绕过编译 method m = c1.getmethod("方法名",object.class); m.invoke(list1,100); //绕过编译操作,绕过了泛型 system.out.println(list1.size());
    查看全部
  • 只要在类里面声明的都有类类型 public static void pringClassMessage(Object object){ //要获取类的信息,首先要获取类的类型 Class c=object.getClass();//传递的是哪个子类的对象,c就是该子类的类类型 //获取类的名称 System.out.println("类的名称是:"+c.getName()); /* * Method类,方法对象 * 一个成员方法就是一个Method对象 * getMethods()方法获取的是所有public函数,包括父类继承而来的 * getDeclaredMethods()获取的是所有该类自己声明的方法,不问访问权限 * */ Method[] ms=c.getMethods();//c.getDeclaredMethods(); for (int i = 0; i < ms.length; i++) { //得到方法的返回值类型的类类型 Class returnType=ms[i].getReturnType(); System.out.println(returnType.getName()); //得到方法名 System.out.println(ms[i].getName()+"("); //获取参数类型-->得到的是参数列表的类型的类类型 Class[] paramType=ms[i].getParameterTypes(); for (Class class1: paramType) { System.out.println(class1.getName()+","); } System.out.println(")"); } } }
    查看全部
  • 动态加载一个类 Class c = Class.forName("类的全称") 不仅表示了类的类类型,还代表了动态加载类 编译时加载类是静态加载类,运行时刻加载类是动态加载类 new创建的对象 是静态加载类,在编译时就需要加载所有的可能使用到的类,一个出错,全部没用。通过动态加载类可以解决。Class c=Class.forName();,通过类类型,创建该类对象。 通过继承标准类型接口做强制类型转换。 officeAble oa = (OfficeAble)c.newInstance(); oa.start(); Class XXX implements officeAble{...}
    查看全部
  • 动态加载一个类 Class c = Class.forName("类的全称") 不仅表示了类的类类型,还代表了动态加载类 编译时加载类是静态加载类,运行时刻加载类是动态加载类 new创建的对象 是静态加载类,在编译时就需要加载所有的可能使用到的类,一个出错,全部没用。通过动态加载类可以解决。Class c=Class.forName();,通过类类型,创建该类对象。 通过继承标准类型接口做强制类型转换。
    查看全部
  • 动态加载一个类 Class c = Class.forName("类的全称") 不仅表示了类的类类型,还代表了动态加载类 编译时加载类是静态加载类,运行时刻加载类是动态加载类 new创建的对象 是静态加载类,在编译时就需要加载所有的可能使用到的类,一个出错,全部没用。通过动态加载类可以解决。Class c=Class.forName();,通过类类型,创建该类对象。 通过继承标准类型接口做强制类型转换。
    查看全部
  • 反射注意点...
    查看全部
  • 编译之后在运行的时候是去泛型的.
    查看全部

举报

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

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