`
Sharpleo
  • 浏览: 573771 次
  • 性别: Icon_minigender_1
  • 来自: newsk
社区版块
存档分类
最新评论

java bean 工具类

    博客分类:
  • java
阅读更多
package org.sharpcode.util;

import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.MethodDescriptor;
import java.beans.ParameterDescriptor;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.sharpcode.po.Account;

/**
 * java bean 工具类
 * 
 * @author kingschan
 * 
 */
public class JavaBeanUtil {
	/**
	 * 得到一个bean的方法列表
	 * 
	 * @param clazz
	 * @throws IntrospectionException
	 */
	public static void getBeansMethods(Class<?> clazz)
			throws IntrospectionException {
		// 方法列表
		MethodDescriptor[] methods;
		// 参数列表
		ParameterDescriptor[] parameters;
		methods = Introspector.getBeanInfo(clazz).getMethodDescriptors();
		System.out.println(String.format("%s:共有%s个方法", clazz.getName(),
				methods.length));
		for (MethodDescriptor m : methods) {
			System.out.println(m.getName());
			parameters = m.getParameterDescriptors();
			if (null != parameters) {
				for (ParameterDescriptor p : parameters) {
					System.out.println("parametes:" + p.getName());
				}
			}

		}
	}

	/**
	 * 得到bean的属性名字
	 * 
	 * @param clazz
	 * @throws IntrospectionException
	 * @throws InvocationTargetException
	 * @throws IllegalAccessException
	 * @throws IllegalArgumentException
	 */
	public static void getProperty(Object obj) throws IntrospectionException,
			IllegalArgumentException, IllegalAccessException,
			InvocationTargetException {
		// 属性列表
		PropertyDescriptor[] propertys;
		Method method;
		propertys = Introspector.getBeanInfo(obj.getClass())
				.getPropertyDescriptors();
		for (PropertyDescriptor p : propertys) {
			System.out.println(p.getName());
			method = p.getReadMethod();
			// Set<String> set = new HashSet<String>();
			// set.add("accountUsername");
			// getPropertyValue(p,obj,set);
			getPropertyValue(p, obj);

		}
	}

	/**
	 * 得到bean 属性的值
	 * 
	 * @param p
	 * @param obj
	 * @throws InvocationTargetException
	 * @throws IllegalAccessException
	 * @throws IllegalArgumentException
	 */
	public static void getPropertyValue(PropertyDescriptor p, Object obj)
			throws IllegalArgumentException, IllegalAccessException,
			InvocationTargetException {
		System.out.println(String.format("key:%s value:%s", p.getName(), p
				.getReadMethod().invoke(obj)));
	}

	/**
	 * 只打出指定属性名
	 * 
	 * @param p
	 * @param obj
	 * @param pname
	 * @throws IllegalArgumentException
	 * @throws IllegalAccessException
	 * @throws InvocationTargetException
	 */
	public static void getPropertyValue(PropertyDescriptor p, Object obj,
			Set<String> pname) throws IllegalArgumentException,
			IllegalAccessException, InvocationTargetException {
		if (pname.contains(p.getName())) {
			System.out.println(String.format("key:%s value:%s", p.getName(), p
					.getReadMethod().invoke(obj)));
		}

	}

	/**
	 * 构建指定的对象 并初始化
	 * 
	 * @param obj
	 *            对象类型
	 * @param map
	 *            key 属性名 value 要初始化的值
	 * @return
	 * @throws IntrospectionException
	 * @throws InvocationTargetException
	 * @throws IllegalAccessException
	 * @throws IllegalArgumentException
	 * @throws ClassNotFoundException
	 * @throws InstantiationException
	 */
	public static Object buildObject(Object obj, Map<String, Object> map)
			throws IntrospectionException, IllegalArgumentException,
			IllegalAccessException, InvocationTargetException,
			ClassNotFoundException, InstantiationException {
		//实例化一个对象
		Object objclass = ((Class<?>) obj).newInstance();
		// 属性列表
		PropertyDescriptor[] propertys;
		Method method;
		Class<?> ptype;// 参数列类
		propertys = Introspector.getBeanInfo(objclass.getClass())
				.getPropertyDescriptors();
		for (PropertyDescriptor p : propertys) {
			//对属性赋值
			if (map.keySet().contains(p.getName())) {
				method = p.getWriteMethod();
				ptype = method.getParameterTypes()[0];
				method.invoke(objclass, map.get(p.getName()));
			}

		}
		return objclass;
	}

	public static void main(String[] args) throws IntrospectionException,
			IllegalArgumentException, IllegalAccessException,
			InvocationTargetException, ClassNotFoundException,
			InstantiationException {		
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("accountUsername", "admin");
		map.put("accountId", 100);
		map.put("accountEnable", true);
		Account a = (Account) JavaBeanUtil.buildObject(Account.class, map);
		JavaBeanUtil.getProperty(a);
	}
}
分享到:
评论

相关推荐

    java * Bean 工具类 java * Bean 工具类 java * Bean 工具类 java * Bean

    java * Bean 工具类java * Bean 工具类java * Bean 工具类java * Bean 工具类java * Bean 工具类java * Bean 工具类java * Bean 工具类java * Bean 工具类

    xml 转Java bean工具

    标题中的"xml 转Java bean工具"指的就是这样一种工具,它能够帮助开发者快速地将XML数据映射到Java对象上。这类工具通常会分析XML文件的结构,包括元素、属性等,并基于这些信息生成相应的Java Bean类。生成的Java ...

    java bean自动生成工具

    - **执行命令**:运行批处理文件,工具会解析Excel内容并生成相应的Java Bean类。 5. **自定义模板** XlsToCode可能支持自定义模板功能,允许开发者根据需求调整生成的Bean类结构,例如添加额外的方法或注解。 6...

    java spring工具类 方便在非spring管理环境中获取bean

    java spring工具类 方便在非spring管理环境中获取beanjava spring工具类 方便在非spring管理环境中获取beanjava spring工具类 方便在非spring管理环境中获取beanjava spring工具类 方便在非spring管理环境中获取bean...

    xml和java bean互相转换工具包(简单易用)

    xml 与 bean 互相转换 工具类 1、bean类的属性需要遵守BEAN规范,否则 无法 读存BEAN值。 2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么...

    逆向生成工具,有数据库表生成java bean实体类

    对于每一个表,工具会自动生成一个对应的Java Bean类,这个类包含了表中的字段作为类的属性,并为每个属性提供了getter和setter方法。此外,如果在XML配置文件中启用了相关选项,工具还会生成toString、equals和...

    java *spring工具类 方便在非spring管理环境中获取bean

    java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...

    根据json串自动生成JAVA BEAN工具

    在处理大量JSON数据时,手动创建对应的JavaBean类会非常耗时,因此出现了“根据json串自动生成JAVA BEAN工具”。 这类工具的主要功能是解析JSON字符串,并自动生成符合Java Bean规范的类,这样开发者就可以方便地将...

    java 专用 Bean工具

    Java 专用Bean工具是一种高效的开发辅助工具,它主要用于简化Java应用程序中的对象模型创建,尤其是在处理数据库操作时。这种工具能够自动生成与数据库表结构相对应的实体类(Entity)、值对象(Value Object,VO)...

    java bean 转为JSON

    Java Bean则是一种符合Java编程规范的类,通常用于封装数据。下面我们将详细介绍这个过程,并探讨如何通过代码实现这一转换。 首先,我们需要了解Java Bean的基本结构。一个Java Bean通常包含私有属性、对应的...

    Map和Bean灵活转换工具类

    这个工具类提供了一系列的方法,如`copyProperties()`,可以将一个Bean的属性值复制到另一个Bean中,实现了对象间的属性映射。此外,`BeanUtils`还可以将Bean转换为Map,这样我们就可以轻松地获取Bean的所有属性及其...

    java bean生成工具

    很好用的一款javabean生成工具,只需要输入属性名称、类型、注释、自动生成带有注释的java实体类

    Java Bean 遍历和使用注解给Bean的属性添加属性值

    在Java编程中,Java Bean是一种遵循特定规则的对象,主要用于数据封装和交换。这些规则包括具有公共getter和setter方法,无参数构造器以及属性为私有等。Java Bean遍历是获取并操作Bean对象属性的过程,而注解是现代...

    JAVA Bean 课程.rar_Java bean

    - **可视化Bean**:一些Java Beans设计为可视化组件,如JButton、JLabel等,可以在图形用户界面(GUI)工具中拖放使用。 - **属性编辑器**:IDEs如Eclipse和NetBeans提供可视化编辑器,允许开发者通过图形界面修改...

    java工具类(包括bean操作工具类、浏览器读取工具累、汉字转拼音工具类、图片处理工具类、ip工具类、随机码工具类、json)

    java工具类(包括bean操作工具类、浏览器读取工具累、汉字转拼音工具类、图片处理工具类、ip工具类、随机码工具类、json)

    Bean与Map转换工具类BeanMapConverter.java

    Bean与MAP间互转换的工具类。 1.将一个 Map 对象转化为一个 JavaBean,可指定BEAN的类型; 2.将一个 JavaBean 对象转化为一个 HashMap;

    自动根据数据库生成JAVA BEAN和DAO

    3. 代码生成器:利用工具或框架(如MyBatis的generator、Hibernate的hibernate-tools等),根据数据库连接信息和表名,自动生成Java Bean和DAO类。生成器会根据表的字段生成Bean的属性,根据表的主键生成Bean的...

    Java常用工具类包包含各种常用开发工具

    "Java常用工具类包"是一个集合,它包含了多种针对不同场景的工具类,如文件操作、文本处理、对象转换等。下面将详细介绍这些工具类的主要功能及其应用场景。 1. **文件对比**: - Java中的`java.io.File`类可以...

    Elasticsearch java工具类

    本项目是针对Elasticsearch 5.x版本的Java工具类,旨在简化与SpringBoot集成时的开发流程,通过封装常用API和自定义注解,实现开箱即用的功能。 首先,让我们深入理解Elasticsearch的Java API。Elasticsearch提供了...

    java常用工具类的封装jar

    并且在平时开发中会遇到各种各样通用的一些功能,比如对json的处理,对String对象的处理,对Excel文件的处理,MD5加密处理,Bean对象处理等等,这些常用并通用的方法可以被封装成一个个工具类如StringUtil,...

Global site tag (gtag.js) - Google Analytics