`

java对象属性操作

阅读更多

package utils;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Constructor;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import pojo.Point;

 

public class PropertiesUtil {

 

 private static PropertyDescriptor[] getPropertyDescriptors(Object obj) {
  BeanInfo ObjInfo;
  try {
   ObjInfo = Introspector.getBeanInfo(obj.getClass());
  } catch (IntrospectionException e) {
   return new PropertyDescriptor[0];
  }
  PropertyDescriptor[] propertyDesc = ObjInfo.getPropertyDescriptors();
  return propertyDesc;
 }

 

 public static void mapToPojo(Map map, Object obj) {
  PropertyDescriptor[] propertyDesc = getPropertyDescriptors(obj);
  for (int i = 0; i < propertyDesc.length; i++) {
   if (propertyDesc[i].getName().compareToIgnoreCase("class") == 0)
    continue;
   String strValue = (String) map.get(propertyDesc[i].getName());
   Object value = parseObject(strValue, propertyDesc[i]
     .getPropertyType());
   try {
    propertyDesc[i].getWriteMethod().invoke(obj, value);
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
 }

 

 public static void pojoToMap(Object obj, Map map) {
  PropertyDescriptor[] propertyDesc = getPropertyDescriptors(obj);
  for (int i = 0; i < propertyDesc.length; i++) {
   if (propertyDesc[i].getName().compareToIgnoreCase("class") == 0)
    continue;

   String key = propertyDesc[i].getName();
   try {
    map.put(propertyDesc[i].getName(), propertyDesc[i]
      .getReadMethod().invoke(obj));
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
 }

 

 public static Object parseObject(String fromObj, Class toClass) {
  Object objReturn = null;
  if (fromObj.equals("")) {
   return objReturn;
  }
  String toClassName = toClass.getName();
  if (fromObj.getClass().getName().equals(toClassName)) {
   objReturn = fromObj;
  } else if ("java.util.Date".equals(toClassName)) {
   objReturn = JavaBeanDateUtil.toDate(fromObj);
  } else if ("java.util.Calendar".equals(toClassName)) {
   objReturn = JavaBeanDateUtil.toCalendar(fromObj);
  } else if ("java.sql.Date".equals(toClassName)) {
   objReturn = new Date(JavaBeanDateUtil.toDate(fromObj).getTime());
  } else if ("java.sql.Time".equals(toClassName)) {
   objReturn = new Timestamp(JavaBeanDateUtil.toDate(fromObj)
     .getTime());
  } else if ("java.sql.Timestamp".equals(toClassName)) {
   objReturn = new Timestamp(JavaBeanDateUtil.toDate(fromObj,
     "yyyy-MM-dd HH:mm:ss.SSS").getTime());
  } else if ("java.lang.Integer".equals(toClassName)
    || "java.lang.Long".equals(toClassName)
    || "java.lang.Double".equals(toClassName)
    || "java.lang.Float".equals(toClassName)
    || "java.math.BigDecimal".equals(toClassName)
    || "java.lang.Short".equals(toClassName)) {
   try {
    Constructor constructor = toClass
      .getConstructor(new Class[] { java.lang.String.class });
    objReturn = constructor.newInstance(new Object[] { fromObj });
   } catch (Exception e) {
    e.printStackTrace();
   }
  } else {
   throw new IllegalArgumentException("toClassName= " + toClassName
     + ", unsupported");
  }
  return objReturn;
 }

 

 public static String fieldToDbColum(String field) {
  StringBuilder toField = new StringBuilder("");
  for (int i = 0; i < field.length(); i++) {
   char c = field.charAt(i);
   if ('A' <= c && c <= 'Z') {
    toField.append("_").append(String.valueOf(c).toLowerCase());
   } else
    toField.append(c);
  }
  return toField.toString();
  /*  
  StringBuilder toField = new StringBuilder(field);
  int j = 0;
  for (int i = 0; i < field.length(); i++) {
   char c = field.charAt(i);
   if ('A' <= c && c <= 'Z') {
    toField.insert(i + j, "_");
    j++;
   }
  }
  return toField.toString().toLowerCase();
  */
 }

 

 public static void main(String[] args) throws Exception {
  Map map = new HashMap();
  map.put("x", "100");
  map.put("y", "100");
  Point p = new Point();
  mapToPojo(map, p);
  System.out.println("横坐标:" + p.getX() + "\t纵坐标:" + p.getY());

  Map map2 = new HashMap();
  pojoToMap(p, map2);
  for (Iterator iterator = map2.entrySet().iterator(); iterator.hasNext();) {
   Entry en = (Entry) iterator.next();
   System.out.println(en.getKey() + "=" + en.getValue());
  }
  
  String field = "aaaBbbbbCc";
  System.out.println(fieldToDbColum(field));
 }


}

 

 

public class JavaBeanDateUtil {

 

    public static final String defaultDatePattern = "yyyy-MM-dd";
    public static final String defaultDateTimePattern = "yyyy-MM-dd HH:mm:ss";
    public static final String defaultTimestampPattern = "yyyy-MM-dd HH:mm:ss.SSS";

 

    public JavaBeanDateUtil() {
    }

 

    public static String dateFormat(Object dateObj) {
        return dateFormat(dateObj, null);
    }

 

    public static String dateFormat(Object dateObj, String pattern) {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern == null ? defaultDatePattern : pattern, Locale.CHINA);
        if (dateObj == null) {
            return null;
        } else if (dateObj instanceof Date || dateObj instanceof java.util.Date) {
         java.util.Date date = new java.util.Date(((Date)dateObj).getTime());
         return sdf.format(date);
        } else if (dateObj instanceof Calendar) {
            java.util.Date date = ((Calendar)dateObj).getTime();
            return sdf.format(date);
        } else if (dateObj instanceof Time) {
            java.util.Date date = new java.util.Date(((Time)dateObj).getTime());
            return sdf.format(date);
        } else if (dateObj instanceof Timestamp) {
            java.util.Date date = new java.util.Date(((Timestamp)dateObj).getTime());
            return sdf.format(date);
        }
        return null;
    }

 

    public static java.util.Date toDate(String dateStr) {
        String pattern = "yyyy-MM-dd";
        if (dateStr.indexOf(".") > 0) {
            pattern = "yyyy-MM-dd HH:mm:ss.SSS";
        } else if(dateStr.indexOf(":") > 0) {
            pattern = "yyyy-MM-dd HH:mm:ss";
        }
        return toDate(dateStr, pattern);
    }

 

    public static java.util.Date toDate(String dateStr, String pattern) {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern == null ? defaultDatePattern : pattern, Locale.CHINA);
        java.util.Date dateReturn = null;
        try {
            dateReturn = sdf.parse(dateStr);
        } catch (ParseException e) {
            System.out.println((new StringBuilder("unknown date format:")).append(dateStr).toString());
        }
        return dateReturn;
    }

 

    public static Calendar toCalendar(String dateStr) {
        return toCalendar(dateStr, null);
    }

 

    public static Calendar toCalendar(String dateStr, String pattern) {
        java.util.Date date = toDate(dateStr, pattern);
        Calendar calendarReturn = Calendar.getInstance();
        calendarReturn.setTime(date);
        return calendarReturn;
    }


}

 

分享到:
评论

相关推荐

    java List中对象多属性排序及各属性排序设置

    本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和自定义比较器(Comparator)来完成的,对于复杂的数据排序需求具有很高的灵活性。...

    MyBatisDemo && JAVA把一个对象的全部属性复制到另一个相同的对象

    这篇博文“MyBatisDemo && JAVA把一个对象的全部属性复制到另一个相同的对象”探讨的是如何在Java编程中实现对象属性的深度复制。MyBatis是一个流行的Java持久层框架,它简化了数据库操作,而对象复制则是处理业务...

    java 按对象属性排序

    在Java编程中,按对象属性排序是一个常见的需求,特别是在数据处理和数据分析的场景下。这里我们探讨的主题是如何根据对象的属性进行排序,结合提供的`Simple.java`和`User.java`文件,我们可以假设这是一个关于...

    Excel列表转化成java对象

    4. **映射属性**:将字段值映射到Java对象的属性。 5. **收集对象**:将所有创建的对象放入集合(如ArrayList)中。 在项目中,我们可能还需要实现反向操作,即从Java对象集合生成Excel或CSV文件。这有助于在系统...

    java对象转对象插件

    "java对象转对象插件"旨在简化这个过程,提供了一种便捷的方式来将Java对象转换为Map、List、Set或其他对象,提高了开发效率。下面将详细介绍这个插件的工作原理、使用方法及其优势。 首先,Java对象到Map的转换是...

    java 对象克隆

    在Java编程语言中,对象克隆是一种创建一个与原对象具有相同数据的新对象的过程。对象克隆主要用于复制或备份对象,以便在不干扰原始对象的情况下对其进行修改或操作。本篇文章将详细探讨Java中的对象克隆及其实现...

    java对象复制克隆

    标签中的“复制java对象”、“深度克隆”和“深度复制实例”强调了我们要关注的是Java中如何实现对象的深拷贝,并提供了实际操作的例子。在编写代码时,应该遵循良好的编程实践,包括适当的命名、注释和错误处理,以...

    java读取属性文件

    在本教程中,我们将深入探讨如何在Java中读取属性文件,并结合日志记录进行操作。 首先,我们需要了解如何创建一个简单的属性文件。例如,我们创建一个名为`config.properties`的文件,内容如下: ``` database....

    xsd转换成java对象

    XSD转换成Java对象的过程,也称为XML到Java对象的绑定或者XML Schema Binding,是将XML数据映射为Java类,使得程序能够方便地读取、操作和验证XML数据。这一过程在处理XML数据丰富的系统中非常常见,如Web服务或企业...

    java 子类对象赋值给父类对象的使用

    7. **匿名内部类**:即使没有显式定义子类,也可以通过匿名内部类实现子类对象赋值给父类对象的操作,这在处理接口时非常常见。 8. **多态性**:向上转型是实现多态的基础,使得我们可以使用父类引用处理不同子类...

    xml转换java对象

    在Java编程中,我们经常需要将XML文件的数据转换为Java对象,以便于处理和操作。Apache Commons Betwixt库提供了一种简单的方法来实现这个转换。 Apache Commons Betwixt是Apache软件基金会的一个项目,它提供了一...

    java面向对象编程pdf

    类的组成包括属性(数据本身)和方法(操作数据的行为)。例如,Student类可以包含String类型的姓名、int类型的年龄、char类型的性别和double类型的成绩,以及打印学生信息的方法。 2.1 定义类的成员变量 在Java中...

    Java面向对象程序设计

    Java面向对象程序设计是计算机编程领域中的核心主题,它基于面向对象编程(OOP)理念,使得代码更具有模块化、可复用性和易于维护的特点。以下是对标题和描述中涉及的知识点的详细阐述: 1. **第1章:Java入门** -...

    Java面向对象五子棋

    Java面向对象编程是一种重要的软件开发方法,它基于“对象”的概念,强调数据和操作数据的方法紧密结合,使得代码更易于理解和维护。在这个名为“Java面向对象五子棋”的项目中,我们有两个使用Java实现的五子棋小...

    JAVA对象模块.rar

    Java对象模块是Java编程中的核心概念,它代表了程序中的数据和行为的组合。在Java中,对象是类的实例,而类则是对象的蓝图。理解这一模块的关键在于掌握类、对象、属性和方法等基本概念。 1. 类(Class): 类是...

    Java面向对象精髓编程

    - **集合框架(Collections Framework)**:Java提供了丰富的数据结构和算法,如ArrayList、LinkedList、HashMap等,方便存储和操作对象。 - **网络编程(Network Programming)**:Java的Socket类和ServerSocket类...

    Java面向对象程序设计课后答案全解

    Java面向对象程序设计是计算机科学中的一个重要领域,它基于面向对象编程(OOP)原则,为开发者提供了构建复杂软件系统的方法。本资源包含了该课程所有章节的课后习题答案,帮助学习者深入理解Java语言的面向对象...

    java类与对象实例

    对象的状态指的是对象的一些属性的值,对象的行为指的是对象可以执行的操作。对象的标识是指对象的唯一标识符,以区别于其他对象。 类与类之间的关系有依赖、组合和继承三种。依赖关系是指两个类之间的使用关系,...

    java 利用反射将同一种对象,不同属性值,合并为一个新的对象

    在web开发中,经常遇到修改的操作。而使用hibernate,它的修改是基于对象的,如果用户修改的字段非常多,但是我们并不知道用户到底修改了那个字段,这时候就需要一个一个的去判断,因此非常耗时,所以我写了个工具类...

Global site tag (gtag.js) - Google Analytics