美文网首页
Java反射机制

Java反射机制

作者: NiklausTxt | 来源:发表于2016-10-05 20:09 被阅读0次

JAVA反射机制

      JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

获取Class对象有三种方式:

1.通过Object类的getClass()方法。例如:

Class c1 = new String("").getClass();

2.通过Class类的静态方法——forName()来实现:

Class c2 = Class.forName("MyObject");         //传入一个类名的字符串

3.如果T是一个已定义的类型的话,在java中,它的.class文件名:T.class就代表了与其匹配的Class对象,例如:

Class c3 = Manager.class;

Class c4 = int.class;

Class c5 = Double[].class;

了解类的信息

获得本类声明的方法

getName();      //这个方法就是返回String形式的该类的简要描述

获得所有方法

ClassdogClazz = Dog.class;

Method[] methods = dogClazz.getMethods();         //获得所有公共的方法

Method[] methods2 = dogClazz.getDeclaredMethods();            //获得自己定义的方法

获得父类信息

Class superClazz = chineseClazz.getSuperclass();

获得接口信息

Class[] interfaceClazz = chineseClazz.getInterfaces();

根据Class对象创建instance

方法1

ClassdogClazz = Dog.class;

Object o = dogClazz.newInstance();           //Dog类中必须有无参的构造函数

方法2

Constructor c = dogClazz.getConstructor(new Class[]{String.class, int.class});      //根据Dog类中的构造函数,创建一个构造器。

Dog o2 = (Dog) c.newInstance("xiaohei",3);

操作成员变量

ClassdogClazz = Dog.class;

Object o = dogClazz.newInstance();

Field[] fields = dogClazz.getFields();

for(Field f: fields){

System.out.println(f.getName());

}

Field field = dogClazz.getField("name");

field.set(o, "zhangsan");

Field field2 = dogClazz.getDeclaredField("age");

field2.setAccessible(true);                     //否则不能访问到Dog类中的私有变量

field2.set(o, 3);

调用成员方法

ClassdogClazz = Dog.class;

Object o = dogClazz.newInstance();

Method m = dogClazz.getMethod("bark", new Class[]{Dog.class});       //传入方法名,和参数

m.invoke(o, new Object[]{o});                 //调用方法

相关文章

  • Java反射机制入门

    Java反射机制入门 一、什么是反射 JAVA反射机制(The JAVA reflection mechanism...

  • 反射之一

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • 反射之二

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • 反射之三

    总结内容源自以下文章 粗浅看java反射机制 反射机制应用实践 谈谈java反射机制 Java Reflectio...

  • java反射机制

    java的反射机制 1 JAVA的反射机制是什么?反射机制能做什么?反射机制的优点与缺点2 认识 Class...

  • Java中反射的用途

    Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框...

  • Chapter 13 . 反射机制

    阅读原文 Chapter 13 . 反射机制 13.1 Java反射机制研究及应用 Java Reflection...

  • 详解Java反射机制(Reflection)

    详解Java反射机制(Reflection) 反射机制的作用 JAVA反射机制是在运行状态中,对于任意一个类,都能...

  • Java 反射机制

    [1]. java反射详解[2]. Java Reflection(反射机制)详解[3]. 深入理解Java类型...

网友评论

      本文标题:Java反射机制

      本文链接:https://www.haomeiwen.com/subject/meteyttx.html