您的位置:首页 > 移动开发 > Objective-C

java 反射 haspmap --->Object

2016-08-26 00:17 393 查看
import java.math.BigDecimal;
import java.util.Date;

/**
* Created with IntelliJ IDEA
*
* @author: parkerqian
* Date:  16/8/25
* Time:  21:59
* To change this template use File and Code Templates
*/

public class Student extends Address{
private String name;
private  int age;
private Date brithday;
private boolean isrich;
private Integer rank;
private Color lovecolor;
private char mchar;
private BigDecimal amout;
private Double price;
private Long pick;
private Float myfolat;
private Byte mybyte;
private Short myshort;
private Color color;

public Color getColor() {
return color;
}

public void setColor(Color color) {
this.color = color;
}

public Float getMyfolat() {
return myfolat;
}

public void setMyfolat(Float myfolat) {
this.myfolat = myfolat;
}

public Byte getMybyte() {
return mybyte;
}

public void setMybyte(Byte mybyte) {
this.mybyte = mybyte;
}

public Short getMyshort() {
return myshort;
}

public void setMyshort(Short myshort) {
this.myshort = myshort;
}

public Long getPick() {
return pick;
}

public void setPick(Long pick) {
this.pick = pick;
}

public Double getPrice() {
return price;
}

public void setPrice(Double price) {
this.price = price;
}

public BigDecimal getAmout() {
return amout;
}

public void setAmout(BigDecimal amout) {
this.amout = amout;
}

public char getMchar() {
return mchar;
}

public void setMchar(char mchar) {
this.mchar = mchar;
}

public Color getLovecolor() {
return lovecolor;
}

public void setLovecolor(Color lovecolor) {
this.lovecolor = lovecolor;
}

public String getName() {
return name;
}

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

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public Date getBrithday() {
return brithday;
}

public void setBrithday(Date brithday) {
this.brithday = brithday;
}

public boolean isIsrich() {
return isrich;
}

public void setIsrich(boolean isrich) {
this.isrich = isrich;
}

public Integer getRank() {
return rank;
}

public void setRank(Integer rank) {
this.rank = rank;
}

@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", brithday=" + brithday +
", isrich=" + isrich +
", rank=" + rank +
", lovecolor=" + lovecolor +
", mchar=" + mchar +
", amout=" + amout +
", price=" + price +
", pick=" + pick +
", myfolat=" + myfolat +
", mybyte=" + mybyte +
", myshort=" + myshort +
", color=" + color +
'}';
}
}


public enum Color {
RED(1,"红色"),
BLACK(2,"黑色");

Color(int code,String desc){
this.code=code;
this.desc=desc;
}
int code;
String desc;

public int getCode() {
return code;
}

public void setCode(int code) {
this.code = code;
}

public String getDesc() {
return desc;
}

public void setDesc(String desc) {
this.desc = desc;
}
}
public class Address {
private  String address;
private long zipcode;

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

public long getZipcode() {
return zipcode;
}

public void setZipcode(long zipcode) {
this.zipcode = zipcode;
}

@Override
public String toString() {
return "Address{" +
"address='" + address + '\'' +
", zipcode=" + zipcode +
'}';
}
}

import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
* Created with IntelliJ IDEA
*
* @author: parkerqian
* Date:  16/8/25
* Time:  21:56
* To change this template use File and Code Templates
*/

public class ReflectionUtils {

public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException, ParseException {
HashMap<String,String> hashMap=new HashMap<String, String>();
hashMap.put("name","Jordan");
hashMap.put("age","13");
hashMap.put("isrich","true");
hashMap.put("mchar","s");
hashMap.put("address","上海虹口区");
hashMap.put("rank","3");
hashMap.put("brithday","1988-12-13 10:12:15");
hashMap.put("amout","200");
hashMap.put("price","30.02");
hashMap.put("pick","223");
hashMap.put("myfolat","123.03f");
hashMap.put("mybyte","43");
hashMap.put("color","RED");

Student student= (Student)mapToObject(Student.class.newInstance(),hashMap);
System.out.println(student.toString());
System.out.println(student.getAddress()+" "+student.getZipcode());

}

private static List<Field> getAllFields(Object object){
Class<?> clazz=object.getClass();
List<Field> fieldList = new ArrayList<Field>();
while (clazz != null){
Field[] fields = clazz.getDeclaredFields();
Collections.addAll(fieldList, fields);
clazz = clazz.getSuperclass();
}
return fieldList;
}

public static  Object mapToObject(Object object,HashMap<String,String> hashMap) throws IllegalAccessException, ClassNotFoundException, ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<Field> fieldList = getAllFields(object);

for (Map.Entry<String, String> entry : hashMap.entrySet()) {
for(Field field:fieldList){
if(field.getName().equals(entry.getKey())){

field.setAccessible(true);
System.out.println(entry.getKey()+":"+field.getType()+" :"+field.getType().getSimpleName());
if ("Boolean".equals(field.getType().getSimpleName())) {
field.set(object, entry.getValue().equals("true"));
} else if ("BigDecimal".equals(field.getType().getSimpleName())) {
field.set(object, new BigDecimal(entry.getValue()));
} else if ("Date".equals(field.getType().getSimpleName())) {
field.set(object, simpleDateFormat.parse(entry.getValue()));
} else if ("Timestamp".equals(field.getType().getSimpleName())) {
field.set(object, Timestamp.valueOf(entry.getValue()));
} else if (field.getType().isEnum()) {
field.set(object, Enum.valueOf((Class<Enum>) field.getType(), entry.getValue()));
} else if ("int".equals(field.getType().getSimpleName()) || "Integer".equals(field.getType().getSimpleName())) {
field.set(object, Integer.parseInt(entry.getValue()));
} else if ("String".equals(field.getType().getSimpleName())) {
field.set(object, entry.getValue());
}else if ("char".equals(field.getType().getSimpleName())) {
field.set(object, entry.getValue().toCharArray()[0]);
}else if ("Double".equals(field.getType().getSimpleName())) {
field.set(object, Double.parseDouble(entry.getValue()));
}else if ("Long".equals(field.getType().getSimpleName())) {
field.set(object, Long.parseLong(entry.getValue()));
}else if ("Short".equals(field.getType().getSimpleName())) {
field.set(object, Short.parseShort(entry.getValue()));

9ddb
}else if ("Byte".equals(field.getType().getSimpleName())) {
field.set(object, Byte.parseByte(entry.getValue()));
}else if ("Float".equals(field.getType().getSimpleName())) {
field.set(object, Float.parseFloat(entry.getValue()));
}else if(field.getType().isEnum()){
field.set(object,Enum.valueOf((Class<Enum>) field.getType(), entry.getValue()));
}

}
}

}
return object;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA reflection