什么是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反射机制、流(I/O流)、内存管理和Java学习的基础。以下是对这些主题的详细阐述: 一、Java反射机制 Java反射机制是Java语言的一个强大特性,允许程序在运行时检查类、接口、...
为了在Java笔试或面试中取得成功,理解并掌握其核心概念至关重要。以下是一些关键的Java知识点: 1. **Java基础**:首先,你需要熟悉Java的基础语法,包括变量、数据类型、运算符、流程控制(如if-else,switch,...
包含java三大高级特性的文档,《Java Reflection in Action》、《JAVA并发编程实战》、《JVM调优总结》、《深入理解Java虚拟机JVM高级特性与最佳实践》、《concurrent programming in java》,适合想深入java技术的...
Java面试题整理集合 在Java领域,面试是评估求职者技术实力的重要环节。这份整理集合涵盖了Java编程语言的基础、进阶、并发、内存管理、框架等多个方面,旨在帮助准备面试的开发者全面了解并掌握Java的核心知识。...
Java知识点整理 Java是一种广泛使用的面向对象的编程语言,它具有丰富的API(应用程序接口)和强大的功能。在Java考试中,掌握以下知识点至关重要: 1. **JAVA SE**(Java标准版)是Java的核心部分,包括基础语法...
在描述中,同样强调了这是对Java源码的学习和整理,这可能包括了各种类型的程序,如控制台应用、图形用户界面(GUI)应用、网络编程、多线程、数据结构与算法、I/O操作、数据库连接等。"learns"一词暗示这些源码实例...
让我们深入探讨一下Java面试中可能会遇到的一些关键知识点。 1. **基础语法**:面试通常会从Java的基础开始,包括数据类型、变量、运算符、流程控制语句(如if-else、switch-case、for、while等)、类与对象、封装...
6. **字符串处理**:String类在Java中是不可变的,了解其常用方法如concat、substring、indexOf、replace等对编程很有帮助。 7. **集合框架**:Java集合框架包括List、Set和Map接口,以及ArrayList、LinkedList、...
8. **反射机制**:Java反射机制允许在运行时检查类的信息,创建和调用对象。这对于动态加载类、获取方法和字段、调用私有方法等具有灵活性。 9. **泛型**:泛型引入了类型安全,使得容器能够存储特定类型的元素,...
反射机制允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并进行操作,提供了对Java对象模型的动态访问能力。 这些只是Java面试中可能会遇到的一部分问题,涵盖范围广泛,从基础语法到高级特性,深入...
Java架构知识库整理PDF版是一份详尽的资源,涵盖了Java开发和架构设计的各个方面,旨在为Java学习者提供一个全面的学习指南。这份文档可能包含了从基础语法、面向对象编程概念,到高级并发处理、内存管理、性能优化...
以上只是Java基础知识的一部分,深入学习还需要理解设计模式、网络编程、数据库连接、反射、注解等高级主题。这个“java的相关整理”压缩包很可能包含了这些内容的详细教程和实践例子,对于提升Java技能非常有帮助。
8. **反射**:Java反射机制允许在运行时动态地获取类的信息并调用其方法,这在很多场合非常有用,例如在设计模式中。 9. **设计模式**:常见的设计模式如单例、工厂、观察者、装饰器等,都可能在源码实例中有所体现...
7. **反射**:Java反射机制允许我们在运行时动态地获取类的信息并操作类的对象,是实现元编程的重要手段。 8. **JVM**:Java虚拟机的理解,包括内存管理(堆、栈、方法区)、垃圾收集机制、类加载器等,对于优化...
本资料"Java面试题整理.zip"聚焦于Java开发者在面试中可能遇到的关键问题,涵盖了一系列重要主题,如面向对象编程(OOP)、注解、集合、反射、多线程、Spring框架、Dubbo服务治理、MyBatis持久层框架、JVM虚拟机以及...
这份"JAVA核心知识点整理——java自学资料.rar"包含了一份详细的Java学习资源,旨在帮助已经具备一定Java基础知识的开发者进一步提升技能,深入理解Java的底层机制。以下是这份资料可能涵盖的一些核心知识点和学习...
"java论坛经典整理"这个压缩包文件显然汇集了论坛中的精华内容,旨在为学习和研究Java的朋友们提供宝贵的参考资料。下面我们将深入探讨其中可能涉及的一些重要知识点。 1. **基础语法**:Java的基础语法是所有学习...
Java反射技术是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个技术主要基于Java.lang.reflect包中的类和接口,如Class、Constructor、Method和Field等。...
以上知识点只是《Java解惑(整理版本)》中可能涵盖的部分内容,具体细节和问题解决方案可在提供的文档“Java解惑(整理版本).doc”中找到更详尽的解析。通过深入学习和实践,开发者能有效解决Java编程中的困惑,...