1.实体之间的转化
问题描述:一个实体赋值到另一个实体类。
解决方案:书写一个方法,通过反射把相同的变量名字进行赋值。
/** * Created by wangzhipeng on 2017/3/16. */
public class CopyUtils {
public static void Copy(Object source, Object dest) throws Exception {
// 获取属性
BeanInfo sourceBean = Introspector.getBeanInfo(source.getClass(),Object.class);
PropertyDescriptor[] sourceProperty = sourceBean.getPropertyDescriptors();
BeanInfo destBean = Introspector.getBeanInfo(dest.getClass(),Object.class);
PropertyDescriptor[] destProperty = destBean.getPropertyDescriptors();
try {
for (int i = 0; i < sourceProperty.length; i++) {
for (int j = 0; j < destProperty.length; j++) {
if (sourceProperty[i].getName().equals(destProperty[j].getName()) && sourceProperty[i].getPropertyType() == destProperty[j].getPropertyType()) {
// 调用source的getter方法和dest的setter方法
destProperty[j].getWriteMethod().invoke(dest,sourceProperty[i].getReadMethod().invoke(source));
break;
}
}
}
} catch (Exception e) {
throw new Exception("属性复制失败:" + e.getMessage());
}
}
public static void main(String[] args) throws Exception{
AppointmentOrderParam appointmentOrderParam = new AppointmentOrderParam();
appointmentOrderParam.setAppointmentTime("2017/05/04");
appointmentOrderParam.setConditionDescription("这个毛病已经由来已久了,以前没钱看,现在有钱了,想彻底根治");
appointmentOrderParam.setExpertId("myh111000");
appointmentOrderParam.setOtherOrderId("0001123ll33");
appointmentOrderParam.setSubscriberName("呼兰芬");
appointmentOrderParam.setSubscriberPhone("11097777");
appointmentOrderParam.setTheDisease("呼吸病");
appointmentOrderParam.setTimeSlot(1);
appointmentOrderParam.setTreatmentAddress("北京第三附属医院");
appointmentOrderParam.setTreatmentPrice(200);
appointmentOrderParam.setUserId("kkk888");
AppointmentOrder appointmentOrder = new AppointmentOrder();
CopyUtils.Copy(appointmentOrderParam,appointmentOrder);
System.out.println(appointmentOrder);
}
}
2.时间格式转化
问题描述:在项目的使用过程中经常遇见时间转化字符串,或者字符串转化为时间的问题。
解决方案:我们封装一个类型。
/* * File Name:DateUtil.java * Comments: 日期操作工具类 * Author: * Create Date:2013-4-8 上午11:13:29 * Modified By: * Modified Date: * Why & What is modified: * version: V1.0 */
package com.jiayu.his.util;
import java.text.DateFormat;
import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/** * 日期操作工具类 * @date 2013-4-8 上午11:13:29 * @version V1.0 */
public class DateUtil {
/** 日期格式 yyyy-MM-dd */
public static final String DateFormat1 = "yyyy-MM-dd";
public static final String DateFormat2 = "yyyy-MM-dd HH:mm:ss";
public static final String DateFormat3 = "yyyy-MM-dd HH:mm";
/** * 将给定的日期按照 yyyy-MM-dd 格式化后返回字符串 * @param date * @return */
public static String dateToString(Date date) {
if(null == date){
return "";
}
Format formatter = new SimpleDateFormat("yyyy-MM-dd");
return formatter.format(date);
}
public static String alldateToString(Date date) {
if(null == date){
return "";
}
Format formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return formatter.format(date);
}
/** * 将给定的日期按照 pattern 格式化后返回字符串 * @param date * @param pattern * @return */
public static String dateToString(Date date,String pattern) {
if(null == date){
return "";
}
Format formatter = new SimpleDateFormat(pattern);
return formatter.format(date);
}
/** * 取得当前服务器的时间 按照yyyy-MM-dd 格式化后返回字符串 * @return */
public static String getCurrentDate(){
return dateToString(new Date());
}
/** * 取得当前服务器的时间 按照yyyy-MM-dd 格式化后返回字符串 * @return */
public static String getCurrentDateAndTime(){
return dateToString(new Date(),"yyyy-MM-dd hh:mm:ss");
}
/** * 计算并返回给定年月的最后一天 */
public static String lastDateOfMonth(int year, int month) {
GregorianCalendar gc = new GregorianCalendar();
gc.set(Calendar.YEAR, year);
gc.set(Calendar.MONTH, month - 1);
int maxDate = gc.getActualMaximum(Calendar.DAY_OF_MONTH);
gc.set(Calendar.DATE, maxDate);
return dateToString(gc.getTime());
}
/** * 计算并返回日期中的星期几 */
public static int weekOfDate(java.util.Date d1) {
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(d1);
return gc.get(Calendar.DAY_OF_WEEK);
}
/** * 字符串转日期 * @param dateStr * @param formatStr * @return */
public static Date stringToDate(String dateStr,String formatStr){
DateFormat dd=new SimpleDateFormat(formatStr);
Date date=null;
try {
date = dd.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
return date;
}
/** * 时间戳字符串转日期 * @param dateStr * @param formatStr * @return */
public static Date timestampToDate(String dateStr,String formatStr){
SimpleDateFormat sdf=new SimpleDateFormat(formatStr);
return stringToDate(sdf.format(new Date(Long.parseLong(dateStr))),formatStr);
}
}
3.java中instanceof用法
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。