黑马程序员__反射总结

  • ------Java培训期待与您交流! -------

  • 简而言之反射 就是Java类中的各种成分映射成相应的java类。
  • 反射是加载类的class文件并解析里面的数据。利用反射技术可以对一个类进行解剖把各个组成部分映射成一个个对象。

    1、Class类

    Class: 根据所有类的class文件所抽象出的类型如何得到某个class文件对应的class对象。
    Class.forName(“类名”) 用全类名。

    1.1Class类的常用方法

    Field getField(String name) 根据名称得到代表某个属性的Field对象。

    Field[] getFields() 得到所有属性的Field对象数组。

    Constructor getConstructor(Class... parameterTypes) 得到代表某个构造方法的Constructor对象。

    Constructor[] getConstructors() 得到代表所有构造方法的Constructor对象数组。

    Method getMethod(String name, Class... parameterTypes) 得到代表某个一般方法的Method对象。

    Method[] getMethods() 得到代表所有一般方法的Method对象数组。

    2、Constructor类

    Constructor类的对象代表类的一个构造方法。
    得到某个类所有的构造方法例
    Constructor [] constructors= Class.forName( "java.lang.String "). getConstructors();
    得到某一个构造方法例 
    Constructor constructor = Class.forName( “java.lang.String” ).getConstructor(StringBuffer.class);
    利用构造方法创建实例对象
    String str = (String)constructor.newInstance(“abc”);
    Class类的newInstance()方法也可创建类的实例其内部工作原理是先得无参的构造方法再用构造方法创建实例对象。
    String obj =(String) Class.forName(“java.lang.String”).newInstance();

    3、Method类

    Method类代表某个类中的一个一般方法
    得到类中的某一个方法
    例子 Method charAt = Class.forName( “java.lang.String” ).getMethod( "charAt", int.class);
    调用方法
    通常方式System.out.println(str.charAt(1));
    反射方式 System.out.println(charAt.invoke(str, 1)); 
    如果传递给Method对象的invoke()方法的第一个参数为null这有着什么样的意义呢说明该Method对象对应的是一个静态方法

    4、Field类

    Field类代表某个类中的一个成员变量
    字段fieldX 代表的是x的定义而不是具体的x变量。
    示例代码

ReflectPoint point = new ReflectPoint(1,7);Field y = Class.forName( "cn.itcast.corejava.ReflectPoint“ ).getField( "y“ );System.out.println(y.get(point));//Field x = Class.forName( "cn.itcast.corejava.ReflectPoint“ ).getField( "x“ );Field x = Class.forName( "cn.itcast.corejava.ReflectPoint“ ).getDeclaredField( "x");x.setAccessible(true);System.out.println(x.get(point));
  • 实例代码2
public void test(){

     //1加载类

Class cls = Class.forName("cn.csdn.web.test.Student");

//2创建实例对象

Student stu=(Student)cls.newInstance();

//3解析类

Method md=cls.getMethod("getSum",null);//方法名参数名

//4执行

Object obj=md.invoke(stu,null);//赋值

System.out.println(obj);

}
时间: 2024-10-13 16:07:57

黑马程序员__反射总结的相关文章

黑马程序员__反射

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- <反射> 1.Class .class文件加载到内存中就是一个Class对象 获取Class对象的方式有3种: Class.forName(); 类名.class 对象.getClass() 例如: [java] view p

黑马程序员__反射_内省_动态代理

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1.Class .class文件加载到内存中就是一个Class对象 获取Class对象的方式有3种: Scanner sc = newScanner("xxx.txt"); Class.forName(sc.nextL

黑马程序员——高新技术---反射

黑马程序员——高新技术---反射 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 反射把Java类中的各种成分映射成相应的Java类,例如一个Java类中用一个Class类的对象表示,一个类中的组成部分:成员变量,方法,构造方

黑马程序员_Java反射机制

一切的操作都将使用Object完成,类,数组的引用都可以使用Object来接收 1,认识Class类 以前要是想知道一个类中的属性,成员变量,方法等等的信息的话,需要通过new这个类的对象才能得到这些信息,但是在Java中,也允许一个实例化对象找到一个类的完整的信息,这个类就是Class类,Class类是继承Object类的. 正常方式:  引入需要的"包.类"名称 >取得实例化对象 反射方式:  实例化对象>得到完整的"包.类"名称 getClass(

黑马程序员------Java反射学习总结(一)

-------------------------Java培训.Android培训,期待与您交流!----------------------------- 一.反射的概念 1) Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 2)一句话来讲,反射就是将Java类中的各个成分映射成相应的Java类. 3)即在Java中,描述事物的各种

黑马程序员__多线程

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1.线程是程序执行的一条路径, 一个进程中可以包含多条线程,多线程并发执行可以提高程序的效率, 可以同时完成多项工作. 2.开启新线程的两种方式 1).继承Thread [java] view plaincopy public stati

黑马程序员_反射(一)

/*1.反射:反射处理的对象是内存中的java类,即一个类的字节码对象.  该字节码对象是这个类在内存中的代表.            一个类是否加载到内存中来,就看内存中是否有这个类的字节码.           该字节码对象是用来创建其代表的类的实例对象的.           这个字节码对象也是用一个java类来描述的,叫做Class类,即Class类是用来描述java类的,java类这            一类事物有“类名”,“构造方法”,“方法列表”,“字段列表”,“访问权限”,“父

黑马程序员__集合框架总结

------Java培训期待与您交流! ------- 前言: 本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看Java API文档. 一.概述 数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法. 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口

黑马程序员_反射

反射 1.由来: 程序后期扩展,无源码修改的扩展 2.java.lang.Class 描述.class的类 java.lang.reflect.Constructor  描述构造方法的类 java.lang.reflect.Field 描述成员变量的类 java.lang.reflect.Method 描述成员方法的类 3.实现反射: A.获取class文件对象 第一种:通过对象获取 Person p=new Person(); Object中getClass(),返回值是Class类型 第二种