`
phoebird
  • 浏览: 117737 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

反射 之 调用 类中的setter、getter方法

    博客分类:
  • J2SE
阅读更多
package com.cn.component;

import java.lang.reflect.Method;
/**
 * 反射 之 调用 类中的setter、getter方法
 * @author Administrator
 *
 */
public class InvokeSetGetDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		Class<?> c = null;//声明class对象
		Object obj = null;//声明一个对象
		try {
			c = Class.forName("com.cn.model.Person");//实例化class对象
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		try {
			obj = c.newInstance();// 实例化操作对象
		} catch (InstantiationException e) {//实例化异常
			e.printStackTrace();
		} catch (IllegalAccessException e) {//非法访问异常
			e.printStackTrace();
		}
		setter(obj,"name","小李子",String.class);//调用setter
		setter(obj,"age",20,int.class);//调用setter
		System.out.print("姓名:");
		getter(obj,"name");//调用getter方法
		System.out.print("年龄:");
		getter(obj,"age");//调用getter方法

	}

	/**
	 * 
	 * @param obj
	 *            操作的对象
	 * @param attr
	 *            操作的属性值
	 * @param value
	 *            设置的值
	 * @param type
	 *            参数的类型
	 */
	public static void setter(Object obj, String attr, Object value,
			Class<?> type) {
		try {
			// 第一个参数表示方法名称,setAge、setName,第二个参数表示类型,如int.class,String.class
			Method method = obj.getClass().getMethod("set" + initStr(attr),
					type);
			method.invoke(obj, value);// 调用方法
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void getter(Object obj, String attr) {// 调用getter方法

		try {
			Method method = obj.getClass().getMethod("get" + initStr(attr));// 此方法不需要参数,如:getName(),getAge()
			System.out.println(method.invoke(obj));// 接收方法的返回值,输出结果
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static String initStr(String old) {// 单词首字母大写

		String str = old.substring(0, 1).toUpperCase() + old.substring(1);
		return str;
	}
}
//输出:
//姓名:小李子
//年龄:20



package com.cn.model;

import com.cn.service.China;

public class Person implements China{

	private String name;
	
	private int age;
	
	public Person(){
		
	}
	
	public Person(String name){
		this.name=name;
	}
	
	public Person(String name,int age){
		this(name);//调用有一个参数的构造函数
		this.setAge(age);
	}
	
	public void sayChina() {
		// TODO Auto-generated method stub
		System.out.println("作者:"+AUTHOR+" ,国籍: "+NATIONAL);
	}

	public String sayHello(String name, int age) {
		// TODO Auto-generated method stub
		return name+",你好!我今年"+age+"岁了";
	}

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	

}


package com.cn.service;

/**
 * 接口对象
 * @author Administrator
 *
 */
public interface China {

	public static final String NATIONAL="China";//常量
	
	public static final String AUTHOR="老李";//接口中的常量
	
	public void sayChina();//方法,实现接口必须重写
	
	public String sayHello(String name,int age);//方法,实现接口必须重写
}

 

分享到:
评论

相关推荐

    java * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class

    提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具类. 提供调用getter/...

    java 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class

    提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实类等工具函数.反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实...

    Java反射通过Getter方法获取对象VO的属性值过程解析

    在本文中,我们将介绍如何使用Java反射通过Getter方法获取对象VO的属性值的过程解析。 Getter方法是Java Beans规范中的一种方法,用于获取对象的属性值。通过Getter方法,可以获取对象的属性值,并将其存储在Map中...

    JUnit4利用反射机制测试类的私有成员

    在给定的例子中,有一个`Commodity_Parent`类,它包含私有的`commodity_name`和`commodity_price`属性,以及对应的getter和setter方法。这个类被`Commodity_Child`类继承,后者增加了一个私有的`Commodity_number`...

    java反射机制工具类

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段和方法的信息。这个特性使得Java具备了高度的灵活性,能够在运行时动态地发现和使用类的属性和方法,即使这些信息在编译时...

    Java反射动态加载实例类

    `Student`类定义了学生的姓名属性以及相关的getter和setter方法。值得注意的是,`Study`方法用于模拟学生学习的行为,当通过反射调用时,会在控制台输出一条信息:“this person is a student”。 #### 五、配置...

    Java反射类中属性方法

    - 数据库持久化框架:例如Hibernate,通过反射调用对象的getter和setter方法来读写数据库记录。 - AOP(面向切面编程):动态代理实现切面的插入。 - 运行时检查类结构:例如在单元测试中验证类的属性和方法。 总结...

    采用反射技术和XML的通用实体类

    例如,通过反射调用对象的getter方法获取属性值,然后拼接成SQL的WHERE子句;或者,通过setter方法设置属性,然后执行插入或更新操作。 总结起来,结合反射技术和XML,通用实体类可以有效地减少代码重复,提高开发...

    Java反射根据不同方法名动态调用不同的方法(实例)

    `invoke()`方法的第一个参数是调用该方法的对象,第二个参数是传递给方法的参数(在这个例子中,getter方法不需要参数,所以我们传递了一个空的`Object[]`)。 这样,我们就可以根据数据库中的字段顺序,动态地从`...

    java反射实例.

    // 调用setter方法设置name setNameMethod.invoke(userObj, "张三"); // 获取age属性的setter方法 Method setAgeMethod = userClass.getMethod("setAge", int.class); // 调用setter方法设置age setAgeMethod...

    java 反射 报错 no such method exception

    5. **遵循框架规范**:对于Struts2等框架,遵守其特定规则,如不直接在Action方法中使用参数,而是通过类成员变量及相应的getter/setter方法进行操作。 6. **配置审查**:检查框架配置文件,如`struts.xml`,确保...

    JAVA 反射机制应用

    - 数据库操作框架:如Hibernate,通过反射调用getter/setter方法实现对象与数据库记录的映射。 - 插件系统:允许在不修改源代码的情况下扩展或替换已有功能。 - 测试工具:JUnit等测试框架利用反射访问私有方法...

    通过构造及反射实现类属性赋值

    对于每个字段,我们将其设为可访问,找到目标对象对应名称的字段,然后检查类型是否兼容,最后通过反射调用`set`方法进行赋值。 通过结合构造函数和反射,我们可以实现类属性的深度赋值,即使属性是私有的或需要...

    利用反射实现JavaBean 的自动赋值

    5. **调用setter方法**:通过反射调用setter方法,将转换后的值赋给JavaBean的相应属性。 #### 示例代码解析 在提供的代码片段中,可以看到`ParameterUtil`类的核心方法`setFormBean()`实现了上述逻辑。该方法接受...

    Java 1.5 反射机制

    例如,它利用反射加载和保存数据库实体,调用getter和setter方法来映射属性,以及执行HQL(Hibernate查询语言)中的动态方法调用。 总结来说,Java 1.5的反射机制极大地增强了Java的灵活性和动态性,使得开发者能够...

    Java反射简单小实例

    在这个简单的`Admin`类中,我们定义了一个私有字符串字段`id`以及对应的getter和setter方法。`getId()`方法在打印`id`值之前会先输出这个值。 #### 使用反射调用方法 ```java public static void main(String[] ...

    java中的反射机制

    在`main`方法中,`Util`类被用来创建一个`Son1`的实例,并通过反射调用`setName`方法设置`name`字段为"wang da sha",然后打印出这个名字,证实了反射机制的成功应用。 反射机制在Java开发中有多种用途,例如: - ...

    JAVA-提高反射效率

    从提供的代码片段来看,这段代码定义了一个名为`ClassInfoUtils`的工具类,主要功能是支持给定类的“getter”和“setter”方法映射到一个`ClassInfo`实例中。这个类包含了一些方法,如`putSetterMethod`和`...

    Java语言的反射机制

    4. 遍历这些字段,并使用相应的getter和setter方法将原始对象的属性复制到新对象中。 通过这两个示例,我们可以看到Java反射机制的强大之处,它允许开发者在运行时灵活地操作类和对象,这对于构建高度可扩展和可...

    熟练掌握java反射机制

    反射在JavaBean中扮演重要角色,允许工具通过属性的getter和setter方法动态地操作组件。例如,通过反射可以获取JavaBean的所有属性,然后动态地设置或获取这些属性的值。 6. 应用场景 反射机制在许多场景下都非常...

Global site tag (gtag.js) - Google Analytics