`
xiaoliang330
  • 浏览: 112716 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

对java中反射的整理

阅读更多
什么是Java中的类反射:
   Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性和方法。Java 的这一能力在实际应用中用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。
Reflection 是 Java 被视为动态(或准动态)语言的关键,允许程序于执行期 Reflection APIs 取得任何已知名称之 class 的內部信息,包括 package、type parameters、superclass、implemented interfaces、inner classes, outer class, fields、constructors、methods、modifiers,並可于执行期生成instances、变更 fields 內容或唤起 methods。


Java类反射中所必须的类:
  Java的类反射所需要的类并不多,它们分别是:Field、Constructor、Method、Class、Object,下面我将对这些类做一个简单的说明。
Field类:提供有关类或接口的属性的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)属性或实例属性,简单的理解可以把它看成一个封装反射类的属性的类。
Constructor类:提供关于类的单个构造方法的信息以及对它的访问权限。这个类和Field类不同,Field类封装了反射类的属性,而Constructor类则封装了反射类的构造方法。
Method类:提供关于类或接口上单独某个方法的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。 这个类不难理解,它是用来封装反射类方法的一个类。
Class类:类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。
Object类:每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

Java的反射类能做什么:

   首先我们来写一个类:
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
class A extends Object implements ActionListener{ 
private int a = 3; 
public Integer b = new Integer(4); 
public A(){} 
public A(int id,String name){} 
public int abc(int id,String name){return 0;} 
public void actionPerformed(ActionEvent e){} 
} 





http://www.iteye.com/topic/137944  大部分来着此文  感谢


一下写个为了解耦的类实现
import java.lang.reflect.Method;

public class InvokeTester
{
    public int add(int param1, int param2)
    {
        return param1 + param2;
    }

    public String echo(String msg)
    {
        return "echo: " + msg;
    }

    public static void main(String[] args) throws Exception
    {
        Class<?> classType = InvokeTester.class;
        Object invokeTester = classType.newInstance();

        // Object invokeTester = classType.getConstructor(new
        // Class[]{}).newInstance(new Object[]{});

        // 调用InvokeTester对象的add()方法
        Method addMethod = classType.getMethod("add", new Class[] { int.class, int.class });
        Object result = addMethod.invoke(invokeTester, new Object[] { new Integer(100), new Integer(200) });
        System.out.println((Integer) result);

        // 调用InvokeTester对象的echo()方法
        Method echoMethod = classType.getMethod("echo", new Class[] { String.class });
        result = echoMethod.invoke(invokeTester, new Object[] { "Hello" });
        System.out.println((String) result);
    }
}
分享到:
评论

相关推荐

    Java反射机制总结

    这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。... 关键字有:Java Java反射机制 Java反射 Java反射理论 Java反射实例 Java反射例子 反射原理 反射 网络论文 集合 汇总 总结 Class。

    JAVA 私塾笔记整理——反射机制(Reflection)

    轻松掌握java反射技术,虽然讲得比较简单,但是通俗易懂。

    java 反射的使用

    java 反射使用的整理和委托实现接口反射的例子

    java的类反射

    java很多开源框架中都用到了类反射,整理分享,需要xmind打开!

    java高级特性整理资料(反射+并发+jvm)

    包含java三大高级特性的文档,《Java Reflection in Action》、《JAVA并发编程实战》、《JVM调优总结》、《深入理解Java虚拟机JVM高级特性与最佳实践》、《concurrent programming in java》,适合想深入java技术的...

    JAVA的反射机制与动态代理

    JAVA的反射机制与动态代理 自己 在学习的时候整理的相关文件 欢迎大家查询 共同学习 共同进步 JAVA的反射机制与动态代理 自己 在学习的时候整理的相关文件 欢迎大家查询 共同学习 共同进步

    java 面试常见问题整理

    泛型 Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?...Java 序列化中如果有些字段不想进行序列化,怎么办? 获取用键盘输入常用的两种方法 Java 中 IO 流分为几种? 既然有了字节流,为什么还要有字符流?

    JAVA核心知识点整理.zip

    java核心知识点整理,面试很有用 Java核心知识点2.JVM JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它...

    反射常用方法整理(xmind)

    整理的Java反射的常用的一些方式,采用xmind的形式整理出来。希望有能够用到的。将java代码的各个组成部分封装为其他对象,可以在程序运行过程中操作这些对象,这就是java的反射机制;

    java核心知识点整理

    java详细的知识点整理,包括:jvm原理、IO、类加载过程、集合、线程、反射、泛型等java基础,spring原理、特点,微服务架构、数据库引擎、消息组件、算法、数据结构等。偏理论的知识较多,主要用于面试。

    JAVA核心知识点整理.pdf

    一份整理的蛮不错的Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。

    Java面试题整理.zip

    Java面试题整理,包括OOP、注解、集合、反射、多线程、Spring、Dubbo、MyBatis、JVM、Mysql等常见的面试题,以及各互联网公司,如阿里巴巴、腾讯公司的面试真题整理。

    Java反射原理

    上传文件关于Java的反射原理 本人整理经验

    Java后端面试问题整理.docx

    • 熟悉Java多线程并发中线程基本方法,线程池,线程生命周期,熟悉Java锁中常见锁分类(乐观/悲观锁、自旋锁、独/共享锁、可重入锁、公平/非公平锁、分段锁、偏向锁,轻/重量级锁)和基本的锁升级策略

    java中如何反射获取一个类

    大家说说对java反射的理解,使用反射如何获取一个类,下面小编给大家整理一些资料,关于java中如何反射获取一个类,有需要的朋友可以参考下

    java反射大讲堂 实例源码下载

    这里是个人整理的Java反射大杂烩,里面有获取类的继承关系,类的属性,类的方法,调用类中的方法,给类中私有属性赋值。。。。一系列操作。

    反射整理1

    反射整理1

    JAVA核心面试知识整理

    包含众多面试内容:JVM,JAVA集合,JAVA多线程并发,JAVA基础,JAVA反射,SPRING原理,微服务,NETTY与RPC,网络,日志,ZOOKEEPER,KAFKA,RABBITMQ,HBASE,MONGDB,CASSANDRA,设计模式,负载均衡,数据库,一致性算法,JAVA算法,数据...

    java框架知识点汇总(反射,XML,设计模式,Redis缓存数据库)

    Class 类与 java.lang.reflect 类库一起对反射的概念进行了支持,该类库包含了 Field,Method,Constructor 类 (每个类都实现了 Member 接口)。这些类型的对象时由 JVM 在运行时创建的,用以表示未知类里对应的成员。...

Global site tag (gtag.js) - Google Analytics