`
zcz123
  • 浏览: 156838 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类

java的反射机制的几个例子

    博客分类:
  • java
 
阅读更多

JAVA反射机制定义:   
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能:
在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法;生成动态代理。

在java里面使用的反射机制,主要是使用java API里面java.lang.reflect 包下的一些类,自己在使用java的反射机制时发现,用的比较多的是method invoke方法,所以我就这个的使用写成的一个小例子,源码如下:

/**
 * 测试反射方法
 * @author thinkpad
 *
 */
public class TestMethod {
	
	private String username;

	public String getUsername() {
		System.out.println("getUsername()");
		return username;
	}

	public void setUsername(String username) {
		System.out.println("uesrname:"+username);
		this.username = username;
	}
	
	//反射调用方法
	public void invoke(Object obj){
		try {
			Class cls = obj.getClass();
			Method method= cls.getMethod("setUsername", String.class); 
			Object o = method.invoke(obj, "张三"); //无返回值,为空
			System.out.println("o:"+o);
			
			Method method2= cls.getMethod("getUsername"); //有返回值不为空
			Object o2=method2.invoke(obj);
			System.out.println("o2:"+o2);
			
			Method[] ms = cls.getDeclaredMethods(); //所有方法
			for(Method m : ms){
				System.out.println("m:"+m.getName());
			}
			
			Method[] ms2 = cls.getMethods(); //所有public方法
			for(Method m : ms2){
				System.out.println("m2:"+m.getName());
			}			
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
	}
	
	//适用...来表示数组类型,该参数可以0,1个同类型或本数组类型
	public void print(String... strings ){
		if(strings != null){
			for(String s:strings){
				System.out.println("s:"+s);
			}
		}
	}

 

当然,还有其他的使用,比如字段、构造函数、静态方法等等这些可以

参考:http://blog.csdn.net/njchenyi/article/details/1620939

例外一个反射是我自己在项目中发现的基于接口的,源码如下:

//定义一个接口
public interface ITest {void print(String name);}

//定义一个实现类
public class ZsTest implements ITest {

	public void print(String name) {
		System.out.println("ZsTest:"+name);
	}

}

//定义一个实现类
public class LsTest implements ITest {

	public void print(String name) {
		System.out.println("LsTest:"+name);

	}

}

//定义一个测试类
public class TestInterface {
	
	public void testPrint(Object obj){
		((ITest)obj).print("TestInterface");
	}
	
	public static void main(String[] args) {
		TestInterface ti = new TestInterface();
		//通过传递不同实现类实现不同的作用
		ti.testPrint(new ZsTest()); 
		ti.testPrint(new LsTest());
	}

}

  

分享到:
评论

相关推荐

    反射实例-JAVA反射机制

    ### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...

    JAVA反射机制的简单理解

    这个例子展示了反射机制如何帮助我们在不修改源代码的情况下,根据外部输入或配置动态地决定要创建的对象类型和要执行的操作。这对于插件系统、框架设计、单元测试等方面非常有用。同时,反射也带来了性能上的损失,...

    利用java反射机制的建议计算器源码

    通过这个例子,新手可以学习到如何使用Java反射机制来增强代码的动态性,以及如何设计可扩展的系统。反射在很多场景下都很有用,例如在插件系统、序列化、动态代理等领域都有广泛应用。然而,需要注意的是,反射也...

    java反射机制详解

    ### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...

    Java反射机制总结(实例分析)

    反射机制的核心在于`java.lang.reflect`包中的几个关键类: 1. `Class`类:代表Java中的任何类,它提供了一系列方法用于获取类的信息,如类名(`getName()`)、公共字段(`getFields()`)、所有字段(`...

    JAVA反射机制原理剖析配经典例子,以及模拟DBUTIL发射实现的JDBC操作包自己写的一个DEMO.★

    Java反射机制是Java语言中一个强大的特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。在Java编程中,反射机制为程序提供了灵活的控制,使开发者可以对代码进行更加深入的...

    java反射机制.docx

    在深入讨论Java反射机制之前,我们需要了解以下几个关键类: - **`java.lang.Class`**:每个类在加载到JVM时都会创建一个`Class`对象,该对象包含了类的信息和类的方法。 - **`java.lang.reflect.Method`**:表示类...

    java反射机制与动态代理

    Java反射机制主要是通过以下几个核心类来实现的,这些类都位于`java.lang.reflect`包中: 1. **`Class`类**:表示一个类,是反射机制的基础。通过它可以获取类的各种信息,如类名、超类、接口、字段、方法等。 2. *...

    Java反射函数机制实现List转换Json

    Java反射机制是Java语言提供的一种强大功能,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类和对象,包括获取类的信息、创建对象、调用方法以及访问和...

    java 反射机制知识点

    Java反射机制的主要作用体现在以下几个方面: 1. **动态加载类**:在程序运行时,可以通过字符串形式的类名动态加载未知的类,这在设计框架和插件系统时非常有用。例如,当第二个程序员未完成其类的编写时,第一个...

    Java反射机制.docx

    ### Java反射机制详解 #### 一、反射机制概述 反射机制是Java编程语言的一个核心特性,它允许在程序运行过程中动态地获取类的信息,并能够直接操作这些信息。具体来说,反射使得开发人员可以在运行时: - 获取...

    Java反射简单小实例

    Java反射机制是Java编程语言的一个强大特性,它允许程序在运行时检查自身,并且能够“看”到类的信息(字段、方法等),甚至可以在运行时调用这些方法或修改这些字段的值。这为开发带来了很大的灵活性,同时也增加了...

    java反射机制

    下面给出几个例子看看 Reflection API 的实际运用: 一、通过 Class 类获取成员变量、成员方法、接口、超类、构造方法等: * 通过 getClass() 方法获取对象的类型。 * 通过 getName() 方法获取类的完整名字。 * ...

    JAVA反射机制详解

    ### JAVA反射机制详解 #### 反射机制简介 在Java编程语言中,反射是一种非常强大的功能,它允许程序在运行时动态地获取类的信息并直接操作这些类的对象。这一特性极大地提高了程序的灵活性和可扩展性。根据描述,...

    反射机制的例子

    在这个例子中,我们加载了`ReflectionExample`类,创建了一个实例,并通过反射访问和修改了私有字段`secret`。 值得注意的是,虽然反射提供了极大的灵活性,但也有一些潜在的问题。例如,反射操作通常比直接调用...

    Java 8个反射实例

    Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java 8中,虽然没有引入重大的反射新特性,但原有的反射API仍然提供了丰富的功能,使得开发者...

    就几个反射的例子

    总结起来,Java反射是一个强大但需要谨慎使用的特性。它为开发者提供了运行时的灵活性,但也带来了潜在的风险。理解和熟练运用反射,可以极大地提升Java应用程序的动态性和适应性。在实际开发中,要根据需求权衡利弊...

    Java反射演示Demo

    Java反射是Java编程语言中的一种强大机制,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个“Java反射演示Demo”是一个实例,展示了如何利用Java反射API进行各种...

Global site tag (gtag.js) - Google Analytics