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 工具类
标题中的"xml 转Java bean工具"指的就是这样一种工具,它能够帮助开发者快速地将XML数据映射到Java对象上。这类工具通常会分析XML文件的结构,包括元素、属性等,并基于这些信息生成相应的Java Bean类。生成的Java ...
- **执行命令**:运行批处理文件,工具会解析Excel内容并生成相应的Java Bean类。 5. **自定义模板** XlsToCode可能支持自定义模板功能,允许开发者根据需求调整生成的Bean类结构,例如添加额外的方法或注解。 6...
java spring工具类 方便在非spring管理环境中获取beanjava spring工具类 方便在非spring管理环境中获取beanjava spring工具类 方便在非spring管理环境中获取beanjava spring工具类 方便在非spring管理环境中获取bean...
xml 与 bean 互相转换 工具类 1、bean类的属性需要遵守BEAN规范,否则 无法 读存BEAN值。 2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么...
对于每一个表,工具会自动生成一个对应的Java Bean类,这个类包含了表中的字段作为类的属性,并为每个属性提供了getter和setter方法。此外,如果在XML配置文件中启用了相关选项,工具还会生成toString、equals和...
java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...
在处理大量JSON数据时,手动创建对应的JavaBean类会非常耗时,因此出现了“根据json串自动生成JAVA BEAN工具”。 这类工具的主要功能是解析JSON字符串,并自动生成符合Java Bean规范的类,这样开发者就可以方便地将...
Java 专用Bean工具是一种高效的开发辅助工具,它主要用于简化Java应用程序中的对象模型创建,尤其是在处理数据库操作时。这种工具能够自动生成与数据库表结构相对应的实体类(Entity)、值对象(Value Object,VO)...
Java Bean则是一种符合Java编程规范的类,通常用于封装数据。下面我们将详细介绍这个过程,并探讨如何通过代码实现这一转换。 首先,我们需要了解Java Bean的基本结构。一个Java Bean通常包含私有属性、对应的...
这个工具类提供了一系列的方法,如`copyProperties()`,可以将一个Bean的属性值复制到另一个Bean中,实现了对象间的属性映射。此外,`BeanUtils`还可以将Bean转换为Map,这样我们就可以轻松地获取Bean的所有属性及其...
很好用的一款javabean生成工具,只需要输入属性名称、类型、注释、自动生成带有注释的java实体类
在Java编程中,Java Bean是一种遵循特定规则的对象,主要用于数据封装和交换。这些规则包括具有公共getter和setter方法,无参数构造器以及属性为私有等。Java Bean遍历是获取并操作Bean对象属性的过程,而注解是现代...
- **可视化Bean**:一些Java Beans设计为可视化组件,如JButton、JLabel等,可以在图形用户界面(GUI)工具中拖放使用。 - **属性编辑器**:IDEs如Eclipse和NetBeans提供可视化编辑器,允许开发者通过图形界面修改...
java工具类(包括bean操作工具类、浏览器读取工具累、汉字转拼音工具类、图片处理工具类、ip工具类、随机码工具类、json)
Bean与MAP间互转换的工具类。 1.将一个 Map 对象转化为一个 JavaBean,可指定BEAN的类型; 2.将一个 JavaBean 对象转化为一个 HashMap;
3. 代码生成器:利用工具或框架(如MyBatis的generator、Hibernate的hibernate-tools等),根据数据库连接信息和表名,自动生成Java Bean和DAO类。生成器会根据表的字段生成Bean的属性,根据表的主键生成Bean的...
"Java常用工具类包"是一个集合,它包含了多种针对不同场景的工具类,如文件操作、文本处理、对象转换等。下面将详细介绍这些工具类的主要功能及其应用场景。 1. **文件对比**: - Java中的`java.io.File`类可以...
本项目是针对Elasticsearch 5.x版本的Java工具类,旨在简化与SpringBoot集成时的开发流程,通过封装常用API和自定义注解,实现开箱即用的功能。 首先,让我们深入理解Elasticsearch的Java API。Elasticsearch提供了...
并且在平时开发中会遇到各种各样通用的一些功能,比如对json的处理,对String对象的处理,对Excel文件的处理,MD5加密处理,Bean对象处理等等,这些常用并通用的方法可以被封装成一个个工具类如StringUtil,...