`

java reflect 的使用事例

    博客分类:
  • java
阅读更多
package common;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo {
	public String name;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String sayHello() {
		return "hello";
	}
	
	public String sayHello(String name) {
		return name + ", hello";
	}
	
	public String sayHello(String name, Date date) {
		return name + ", hello at " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
	}

}

package reflect;

import java.util.Date;
import common.Demo;

public class Test1 {
	public static void main(String[] args) {
		try {
			Class<?> clazz = Class.forName("common.Demo");
			Demo demo = (Demo) clazz.newInstance();
			demo.setName("java reflect");
			System.out.println(demo.getName());
			System.out.println(demo.sayHello());
			System.out.println(demo.sayHello("java world"));
			System.out.println(demo.sayHello("java world", new Date()));
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}

package reflect;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Date;

public class Test2 {
	public static void main(String[] args) {
		try {
			Class<?> clazz = Class.forName("common.Demo");
			Object obj = clazz.newInstance();
			
			Field f = clazz.getField("name");
			f.set(obj, "java");
			
			Method m0 = clazz.getMethod("getName", new Class[0]);
			System.out.println(m0.invoke(obj, new Object[0]).toString());
			
			
			Method m1 = clazz.getMethod("sayHello", new Class[0]);
			System.out.println(m1.invoke(obj, new Object[0]).toString());
			
			Method m2 = clazz.getMethod("sayHello", new Class[]{ String.class });
			System.out.println(m2.invoke(obj, new Object[] { "java world" }).toString());
			
			Method m3 = clazz.getMethod("sayHello", new Class[]{ String.class, Date.class });
			System.out.println(m3.invoke(obj, new Object[] { "java world", new Date() }).toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



0
0
分享到:
评论

相关推荐

    JavaReflect

    在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包中的`Constructor`、`Method`和`Field`等类。通过反射,我们可以动态地获取类的信息(如类名、属性、方法),甚至可以在运行时创建和调用类的...

    Java reflect 机制详解

    免费共享,很详细的介绍了反射机制的原理,适合追根究底的java学习者

    java reflect

    虽然Java反射提供了强大的功能,但在实际开发中也需要谨慎使用。因为反射会降低程序的性能,并且可能引入安全隐患。例如,如果在不安全的环境中使用反射来获取私有成员,可能会导致敏感数据泄露。 #### 五、结论 ...

    java教程ppt,讲述了java reflect.,对大家应该很有帮助

    Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在本教程中,我们将深入...请参考`java_base10_reflect.ppt`来深入学习这一强大而复杂的主题。

    JAVA_Reflect

    4. 动态代理:Java的`java.lang.reflect.Proxy`类可以生成动态代理类,实现接口的动态方法调用。 总的来说,Java反射为开发者提供了一种强大的工具,使我们能够在运行时探索和操纵类的结构和行为,极大地扩展了Java...

    java反射JAVA REFLECT (java 反射)

    JAVA REFLECT (java 反射) 取得类的继承结构 - 类所在的包; |- public Package getPackage() - 类的声明方式; |-取得全类名:public String getName() |-只取类名: public String getSimpleName() - 类所继承...

    scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetExcep

    标题中的问题“scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetException”是用户在尝试使用Scrcpy时遇到的一个常见错误。这个错误通常意味着在执行某个方法时,Java运行时环境遇到了未预期的情况。...

    java中的反射reflect

    Java中的反射(Reflect)是Java语言的一个重要特性,它允许运行时访问类的信息,包括类名、属性、方法等,并可以动态地创建对象和调用方法。反射在很多场景下非常有用,比如在框架开发、插件系统、元数据驱动编程等...

    Java Reflect

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有高度的灵活性和动态性,但同时也增加了程序的复杂性和...

    java reflect utils

    `java reflect utils`通常是指一些工具类或库,用于简化和增强Java反射机制的使用。在Java编程中,反射机制主要用于在运行时动态地获取类的信息(如类名、属性、方法等)以及创建和调用对象。 **1. Java反射的基本...

    Java中的reflect 反射的基本东西,

    在Java中,`java.lang.reflect`包提供了对反射的支持。 反射的基础知识包括以下几个核心概念: 1. **Class对象**:每个类在运行时都有一个对应的Class对象,它包含了该类的所有信息。我们可以通过`Class.forName()...

    java 经典编程事例

    本实例演示了如何使用Java反射API向一个限定类型的`ArrayList&lt;Integer&gt;`中添加一个字符串元素。通常情况下,直接向此类集合中添加不同类型的元素(如字符串)会导致编译错误。但通过反射API可以绕过类型检查限制,...

    java.lang.reflect.Proxy 学习资料 讲解 例子 源码

    java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码

    java reflect and annotation programming

    要使用反射,你需要导入`java.lang.reflect`包中的类,如`Class`、`Constructor`、`Method`和`Field`。这些类分别代表类的元数据、构造器、方法和字段。通过`Class`的`forName()`方法,你可以根据类名获取到对应的`...

    Java.lang.reflect 包下常用的类及方法简介

    在Java编程语言中,`java.lang.reflect`包是核心库的一部分,它提供了运行时访问类、接口、字段和方法的能力。这个包对于理解和操作对象的动态特性至关重要,尤其是在实现反射机制时。反射允许我们在程序运行期间...

    java reflect and dynamic proxy .Java反射和动态代理

    主要由java.lang.reflect.Proxy和java.lang.reflect.InvocationHandler接口组成。 1. **Proxy类**:Proxy类的newProxyInstance()方法用于创建动态代理对象,它需要一个ClassLoader、一个接口数组和一个...

Global site tag (gtag.js) - Google Analytics