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

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

Cedar
难度入门
时长 1小时20分
  • 获取方法对象 然后用方法对象进行反射操作方法
    查看全部
  • 方法的反射 首先获取方法的对象(获取方法print(string,string)) Method m = c.getMethod("print",String.class,String.class); 本来是类的对象a1来操作方法 a1.print("hello","WORLD"); 但是现在反过来操作 m.invoke(对象,参数) ------n.invoke(a1,newObject[]{})或者 n.invoke(a1,参数)有参数就写 没有 参数就不传
    查看全部
  • 方法的反射操作 用m对象来进行方法调用 和对象.方法
    查看全部
  • c.getMethod("print",new Class[]{int.class,int.class}) 获取方法名为print 参数为int int的方法 跟写法c.getMethod("print",int.class,int.class)一样
    查看全部
  • 要获取一个方法 就是获取一个类的信息 那么首先要获取这个类的类类型 A a = new A(); Class c = c.getClass(); c就是这个类的类类型 getMethod() 获取的是public的方法 getDeclaredMethod()获取的是自己声明的方法 c.getMethod(name,new Class[]{类类型}) c.getMethod("print",new Class[]{int.class,int.class}) 获取方法名为print 参数为int int的方法
    查看全部
  • java反射机制 1 Class类反射 1.1 Class类 1)在在面向对象的世界里,万事皆对象 java语言中,类是对象,类是java.lang.Class类的实例对象 2)类的实例的表示方式 第一种方式 Class c1 = Obj.Class; 第二种方式 Class c2 = obj.getClass(); 第三种方式 Class c3 = new Class.forName("包名+类名"); --- --- 引用 Caroline的笔记 --- Class类 1)在面向对象的世界里,万事万物皆对象。 类是对象,类是java.lang.Class类的实例对象。 There is a class named Class 2)//Foo的实例对象如何表示 Foo foo1=new Foo();//foo1就表示出来了 //Foo这个类也是一个实例对象,Class类的实例对象,如何表示呢? //任何一个类都是Class的实例对象,这个实例对象有三种表示方式 //第一种表示方式--->实际在告诉我们任何一个类都有一个隐含的静态成员变量class Class c1=Foo.class; //第二种表达方式--->已经知道该类的对象通过getClassF方法 Class c2=foo1.getClass(); //官网c1,c2表示了Foo类的类类型(class type),万事万物皆对象,类也是对象,是Class类的实例对象 //这个对象我们称为该类的类类型 //不管c1 or c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象 //第三种表达方式 Class c3=null; c3=Class.forName("com.imooc.reflect.Foo"); //我们完全可以通过类的类类型创建类的对象实例--->通过c1 or c2 or c3创建Foo的实例对象 Foo foo=(Foo)c1.newInstance();//需要有无参数的构造方法
    查看全部
    0 采集 收起 来源:Class类的使用

    2018-03-22

  • 方法的反射 方法的名称和方法的参数列表才能够唯一决定某一个方法 方法对象有invoke
    查看全部
  • 想要获得这个类的相关信息 首先需要获得这个类的类类型 Object obj Class c = obj.getClass()
    查看全部
  • 1.类的反射机制 1.-万事万物皆对象(除基本数据类型,java静态的成员) -类对象,是java.lang.Class的实例对象 2.类对象的表示方法 1.Object.class //任何一个类都有一个隐含的静态变量class 2.obj.getClass() //已知该类的对象,通过getClass方法 3.Class.forName("全类名")
    查看全部
    0 采集 收起 来源:Class类的使用

    2018-03-22

  • 基本数据类型 类里面的关键字都有类类型
    查看全部
  • Class c1 = double.class; double数据类型的字节码表示方式(double数据类型) Class c2 = Double.class; Double类的类类型
    查看全部
  • Class.forName("类的全称") --不仅仅代表类的类类型 还代表了动态加载类 --区分编译 运行的区别 (要做到 用哪一个 就加载哪一个 不用不加载) new 类的实例对象 编译时刻的静态加载类 编译时刻就需要加载所有可能使用到的类 但是其中有一个不存在或者错误 就无法编译通过 instance 动态加载类 运行时刻 避免了 局部错误使得程序不能运行 Class.forName(“类名”) 返回的是加载类的类类型 动态加载类 在运行时刻 编译时刻没问题 通过类类型 创建该类的对象 类类型.newInstance() 但是此时无法保证通用 (今天用这个类类型 明天用那个类类型)为了确保能够实现通用性 可以定义一个接口 让自己的类去实现这个接口 接口.newInstance()
    查看全部
  • java反射机制 1 Class类反射 1.1 Class类 1)在在面向对象的世界里,万事皆对象 java语言中,类是对象,类是java.lang.Class类的实例对象 2)类的实例的表示方式 第一种方式 Class c1 = Obj.Class; 第二种方式 Class c2 = obj.getClass(); 第三种方式 Class c3 = new Class.forName("包名+类名");
    查看全部
    0 采集 收起 来源:Class类的使用

    2018-03-22

  • getDeclaredMethods public Method[] getDeclaredMethods() throws SecurityException返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。...
    查看全部
  • public class MethodDemo4 { public static void main(String[] args) { ArrayList list = new ArrayList(); ArrayList<String> list1 = new ArrayList<String>(); list1.add("hello"); //list1.add(20);错误的 Class c1 = list.getClass(); Class c2 = list1.getClass(); System.out.println(c1 == c2); //反射的操作都是编译之后的操作 /* * c1==c2结果返回true说明编译之后集合的泛型是去泛型化的 * Java中集合的泛型,是防止错误输入的,只在编译阶段有效, * 绕过编译就无效了 * 验证:我们可以通过方法的反射来操作,绕过编译 */ try { Method m = c2.getMethod("add", Object.class); m.invoke(list1, 20);//绕过编译操作就绕过了泛型 System.out.println(list1.size()); System.out.println(list1); /*for (String string : list1) { System.out.println(string); }*///现在不能这样遍历 } catch (Exception e) { e.printStackTrace(); } }
    查看全部

举报

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

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