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

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

Cedar
难度入门
时长 1小时20分
  • 获取类的成员对象 Field[]=c.getFields() 获取全部的 Field[]=c.getDeclaredFieds()
    查看全部
  • 获取累的方法 Method[]=c.getmethod()
    查看全部
  • 反射课程的内容
    查看全部
    0 采集 收起 来源:Class类的使用

    2017-03-29

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

    2017-03-28

  • 类的动态加载
    查看全部
  • Class类的概念
    查看全部
    0 采集 收起 来源:Class类的使用

    2017-03-28

  • 3.获取方法信息 import java.lang.reflect.Method; public class ClassUtil { public static void printClassMessage(Object obj){ //获取类的信息,首先获取类的类类型 Class c = obj.getClass(); //获取类的名称 String className = c.getName(); //获取类的方法 Method[] methods = c.getMethods();//获取自己声明的方法c.getDeclaredMethods(); for(Method method:methods){ //获取方法返回值类型 Class returnType = method.getReturnType(); //获取方法的名称 String methodName = method.getName(); //获取方法参数类型 Class[] pramTypes = method.getParameterTypes(); } } }
    查看全部
  • 1.Class类的使用 //Object的实例对象如何表示 Object obj = new Object(); //任何一个类都是Class的实例对象,这个实例对象有三种表达方式: (1) Class c1 = Object.class; (2) Class c2 = obj.getClass(); (3) Class c3 = Class.forName(" java.lang.Object"); 其中:c1==c2==c3 //通过类的类类型创建该类的对象实例。 Object obj = (Object)c1.newInstance();
    查看全部
    0 采集 收起 来源:Class类的使用

    2018-03-22

  • 2.动态类加载: //动态加载类,在运行时刻加载 Class c = Class.forName("类名"); //通过类类型,创建该类对象 Object obj = (Object)c.newInstance();
    查看全部
  • 1. 万变不离其宗:要想获得类的信息,就必须要获得类的类类型 2. 把一段代码单独载出去写成一个方法: 选定代码块 -->Refactor(重构)--> Extract Method(抽取方法)-->给导出的方法命名。 成员变量也是对象 java.lang.reflect.Field Filed类封装了成员变量的操作 getFields()方法获取的是所有public成员的信息 构造函数也是对象; java.lang.Constructor中封装了构造函数的信息; getConstructors获取所有的public的构造函数; getDeclaredConstructors得到所有的构造函数;
    查看全部
  • 1. 基本的数据类型、void关键字都有类类型。 截图中的double.class和Double.class是不同的类类型,前者是数据类型double的类类型,后者是Double类的类类型。 getSimpleName()可以返回不包含包名的类名。 2. Class类的基本API操作。 public static void printClassMessage(Object obj){ //要获取类的信息,首先要获取类的类类型 Class c = obj.getClass();//传递的是哪个子类的对象,c就是该子类的类类型 //获取类的名称 System.out.println("类的名称是"+c.getName()); /*万事万物皆对象 * Method类——方法对象 * 一个成员方法就是一个Method对象 * Method类封装了对成员方法的操作 * getMethods()方法获取的是所有的public的函数,包括从父类继承而来的 * getDelaredMethods()获取的是所有该类自己声明的方法,不问访问权限 */ Method[] ms = c.getMethods();//或者c.getDeclaredMethods() for(int i=0;i<ms.length;i++){ //得到方法的返回值类型的类类型 Class returnType = ms[i].getReturnType(); System.out.print(returnType.getName()+" ");//返回值类型的名字 //得到方法的名称 System.out.print(ms[i].getName()+"("); //获取参数类型--->得到的是参数列表的类型的类类型 Class[] paramTypes = ms[i].getParameterTypes(); for (Class class1 : paramTypes) { System.out.println(class1.getName()+","); } System.out.println(")"); } }
    查看全部
  • 集合中的类型 还是原来的类型 因此不能够用forech来遍历 会引起类型转化错误
    查看全部
  • c1 == c2 返回true说明编译之后集合的泛型是去泛型化的 集合没有泛型 也就是说Java中集合的泛型 是防止错误输入的 只有在编译时刻有效 绕过编译就无效了 变异之后 泛型都是去泛型化的 一个集合中放一种类型 放其他的类型 就出错 验证:用方法的反射操作 绕过编译
    查看全部
  • 反射的操作都是编译之后的操作 都是变成字节码(类类型)之后的操作
    查看全部
  • 除了基本的数据类型、静态成员不是对象,万事万物皆对象,而基本的数据类型可封装为包装类。 1、静态加载类,是编译时刻加载;动态加载类,是运行时刻加载 2、new创建对象:是静态加载类,在编译时刻就需要加载所有的【可能使用到的类】。有一个类有问题(如不存在),都不能通过编译,会报错。 3、Class.forName()通过动态加载类,可以用到一个类时,才进行加载。 【功能性的类尽量使用动态加载,并对新添的类实现功能性接口(标准),这样就不用重新编译】 动态加载:即运行时候才去找该类。找不到才报错,其他方式包括new都是编译器就会加载,即编译报错, 动态加载+接口技术实现补丁更新等技术
    查看全部

举报

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

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