JavaBean属性方法反射

本文介绍了一个使用Java反射机制为User类动态设置多个Document对象并获取它们名称的例子。通过反射调用set方法设置Document对象,再通过get方法获取并打印。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.test;
/**
 * 文件类
 * @author chinaxxren
 *
 */
public class Document {
	private String name;

	public Document(String name){
		this.name = name;
	}

	public String getName() {
		return name;
	}

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

 

package com.test;
/**
 * 用户类
 * @author chinaxxren
 *
 */
public class User {
	private String username;
	private String password;
	private Document document1; 
	private Document document2;
	private Document document3;
	private Document document4;
	private Document document5;
	
	public Document getDocument1() {
		return document1;
	}
	public void setDocument1(Document document1) {
		this.document1 = document1;
	}
	public Document getDocument2() {
		return document2;
	}
	public void setDocument2(Document document2) {
		this.document2 = document2;
	}
	public Document getDocument3() {
		return document3;
	}
	public void setDocument3(Document document3) {
		this.document3 = document3;
	}
	public Document getDocument4() {
		return document4;
	}
	public void setDocument4(Document document4) {
		this.document4 = document4;
	}
	public Document getDocument5() {
		return document5;
	}
	public void setDocument5(Document document5) {
		this.document5 = document5;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

 

package com.test;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
/**
 * JavaBean属性反射
 * @author admin
 *
 */
public class Test {
	public static void main(String[] args) throws Exception,
			NoSuchMethodException {
		Map<String, Document> map = new HashMap<String, Document>();
		map.put("document1", new Document("A"));
		map.put("document2", new Document("B"));
		map.put("document3", new Document("C"));
		map.put("document4", new Document("D"));
		map.put("document5", new Document("E"));
		User documents = new User();
		Class<?> cl = documents.getClass();
		Method[] methods = cl.getMethods();
		//设置set方法
		for (Method method : methods) {
			String methodName = method.getName();
			if (!methodName.startsWith("set")) {
				continue;
			}
			String name = methodName.toLowerCase();
			String key = name.substring(3);
			Document document = map.get(key);
			method.invoke(documents, document);
		}
		//get方法
		for (Method method : methods) {
			String methodName = method.getName();
			if (!methodName.startsWith("get") || "getClass".equals(methodName)) {
				continue;
			}
			Object obj = method.invoke(documents);
			Document document = (Document) obj;
			System.out.println(document.getName());
		}

	}
}

 输出结果:

A
B
C
D
E

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值