首先在工程中建立 一个Bean类
public class UserBean {
private String userName ="admin";
private String passWord = "888";
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setUserName(int i) {
}
}
然后 新建一个类 main.java
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Main {
//根据字段调用所有的set方法,传入死值 love
private void dox8() throws Exception {
// TODO Auto-generated method stub
Class cls = Class.forName("com.accp.UserBean");
Object o = cls.newInstance();
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
String fieldName = field.getName();
Method method = cls.getDeclaredMethod("set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1),new Class[]{String.class});
method.invoke(o, new Object[]{"love"});
}
UserBean bean = (UserBean)o;
System.out.println(bean.getUserName()+" "+bean.getPassWord());
}
private void dox7() throws Exception
{
Class cls = Class.forName("com.accp.UserBean");
Object o = cls.newInstance();
Method m = cls.getDeclaredMethod("setUserName",new Class[]{String.class});
m.invoke(o,new Object[]{"John.Lenoe"});
UserBean bean = (UserBean)o;
System.out.println(bean.getUserName());
}
//通过字段找方法
private void dox6() throws Exception {
// TODO Auto-generated method stub
Class cls = Class.forName("com.accp.UserBean");
Object o = cls.newInstance();
Field field = cls.getDeclaredField("userName");
String fieldName = field.getName();
Method method = cls.getDeclaredMethod("get"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1));
}
//调用其中一个已知方法名的方法
private void dox5() throws Exception {
// TODO Auto-generated method stub
Class cls = Class.forName("com.accp.UserBean");
Object obj = cls.newInstance();
Method method = cls.getDeclaredMethod("getUserName");
Object o = method.invoke(obj);
System.out.println(o);
}
//调用当前类的所有get方法
private void dox4() throws Exception {
// TODO Auto-generated method stub
Class cls = Class.forName("com.accp.UserBean");
Object obj = cls.newInstance();
Method[] methods = cls.getDeclaredMethods();
for (Method method : methods) {
if(method.getName().startsWith("get"))
{
Object temp = method.invoke(obj);
System.out.println(temp);
}
}
}
//取出当前类中所有的方法
private void dox3() throws Exception {
// TODO Auto-generated method stub
Class cls = Class.forName("com.accp.UserBean");
Method[] methods = cls.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.getName()+" "+method.getReturnType());
}
}
//取出当前类中所有的字段
private void dox2() throws ClassNotFoundException {
// TODO Auto-generated method stub
Class cls = Class.forName("com.accp.UserBean");
Field[] fields = cls.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
System.out.println(field.getName()+" "+field.getType());
}
}
public static void main(String[] args) throws Exception {
Main ma = new Main();
ma.dox8();
}
//根据传入的类名,生成类结构和类实例
private void dox() throws Exception {
// TODO Auto-generated method stub
Class cls = Class.forName("com.accp.UserBean");
Object obj = cls.newInstance();
UserBean bean = (UserBean)obj;
bean.setUserName("admin");
System.out.println(bean.getUserName());
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/doc123/archive/2008/09/19/2950785.aspx
分享到:
相关推荐
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地获取类的信息并调用其方法,创建对象,访问私有成员,甚至改变类的行为。在深入...
在提供的"java反射实例代码"中,应该包含了如何使用上述方法的实际示例,这些示例有助于加深对Java反射机制的理解。通过阅读和运行这些代码,开发者可以更直观地学习如何在程序运行时动态地操作类、方法和字段,从而...
这个"java反射调用实例代码"应该包含了以上介绍的各种反射操作,可以帮助学习者深入理解Java反射机制,并在实际项目中灵活运用。通过研究和实践这些代码,你可以更好地掌握Java反射的精髓,提升你的编程技能。
总的来说,"JAVA反射机制的入门代码"是初学者理解Java反射机制的好教材,通过它,你可以学习如何动态地操作Java类,提高代码的灵活性,并掌握处理`properties`文件的基础方法。在深入学习和实践中,你将进一步理解...
### Java反射机制实现JavaBean转JSON的详细解析 #### 一、引言 在现代软件开发过程中,数据格式转换是一项非常常见的任务。特别是在处理不同系统之间的数据交换时,JSON(JavaScript Object Notation)因其轻量级...
### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...
Java 反射机制实例详解 Java 反射机制实例详解是一种动态语言机制,允许在程序运行时加载、探知和使用编译期间完全不知道的类、生成其对象实体,调用其方法或者对属性设值。下面是 Java 反射机制实例详解的知识点:...
通过上述实例,我们可以看到Java反射机制在许多实际场景中的应用,它扩展了Java代码的灵活性和可扩展性。然而,也应注意,过度使用反射可能会引入复杂性和潜在的安全风险,因此在设计和实现时需权衡利弊。在理解了...
Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用类的方法等。通过反射,程序可以动态地创建对象和调用其方法,从而实现更灵活的功能。 #### 二、Java反射机制的由来与发展 Java反射机制...
在本资料"java反射机制文档及代码"中,详细介绍了Java反射的基础知识和常见应用。 首先,反射的核心类是`java.lang.Class`,它代表了运行时的类信息。通过Class对象,我们可以获取到类的名称、包名、属性、构造器、...
Java反射机制允许我们动态地获取类的信息,并在运行时创建和调用对象的方法。这种能力使得Java具有高度的灵活性和动态性,特别是在处理跨版本兼容性、元数据操作以及插件系统等方面。 二、反射的基本使用 1. 获取...
Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类集中在java.lang.reflect包下,包括Class、Constructor、Method和...
Java 反射机制详解 Java 反射机制是 Java 语言提供的一种强大的工具,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并进行操作。这种能力使得 Java 应用程序更加灵活,能够在运行时发现和修改自身...
Java反射机制是Java编程语言中...通过实际的代码示例,学习和理解Java反射机制将变得更加直观和深入。在实际开发中,反射常用于框架、插件系统、序列化/反序列化、测试等方面,但也需要谨慎使用,避免过度依赖和滥用。
Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并进行操作。通过反射,开发者可以在程序执行时发现并访问类的字段(fields)、方法(methods)以及构造器(constructors),...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段和方法等对象。这一机制对于理解和利用Java的动态性至关重要,尤其是在进行复杂系统设计、框架开发以及元数据驱动的应用中...