`

JAVA反射机制

 
阅读更多

正常的JAVA编程情况,我们只是对源码进行操作编程。而反射机制的存在,使得我们可以对JAVA字节码进行操作,就是我们编写的JAVA反射源码是对JAVA程序运行时的对象进行操作。

 

反射(Reflection)能够让运行于JVM中的程序检测和修改运行时的行为(官网解释-http://docs.oracle.com/javase/tutorial/reflect/index.html:Reflection is commonly used by programs which require the ability to examine or modify the runtime behavior of applications running in the Java virtual machine. )

用反射与不用反射的一个例子:

 

package com.ghost.t20140503;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class ReflectionTest {
	public static void main(String[] args) {
		// 一般做法
		MyClass myClass = new MyClass(10); 
		myClass.increase(5);
		System.out.println("正常编程方法得到-> " + myClass.getCount());
		try {
			// 获取构造方法
			Constructor<MyClass> constructor = MyClass.class.getConstructor(int.class);
			// 创建对象
			MyClass myClassReflect = constructor.newInstance(10);
			// 获取方法
			Method increaseMethod = MyClass.class.getMethod("increase", int.class);
			// 调用increase方法
			increaseMethod.invoke(myClassReflect, 5);
			
			Method getCountMethod = MyClass.class.getMethod("getCount");
			System.out.println("通过反射得到-> " + (int)getCountMethod.invoke(myClassReflect));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

class MyClass {
	private int count;
	public MyClass(int start) {
		count = start;
	}
	public void increase(int step) {
		count = count + step;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
}

 

一般来说,利用反射编程代码量大,性能也比原始的方法差,代码的可读性也差。那么反射存在的理由是什么呢?其实反射并不只是存在JAVA编程中。

在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。

因此,反射可以让计算机更加智能,让程序可以了解自己,并根据实际情况对自己的结构进行改造。

 

 

分享到:
评论

相关推荐

    java反射机制.zip

    java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...

    java反射机制

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者能够在运行时动态地获取类的信息(如类名、方法名、参数类型)并调用方法,创建对象,甚至...

    JAVA反射机制应用

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

    Java反射机制的实现_Reflection

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。通过Java反射机制,开发者可以在不知道具体类名的情况下创建对象,调用方法,访问和修改私有成员变量,以及...

    一个例子让你了解Java反射机制

    Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类集中在java.lang.reflect包下,包括Class、Constructor、Method和...

Global site tag (gtag.js) - Google Analytics