/**
* 一个简单的JavaBean
* @author aming
*
*/
public class Person implements Serializable {
private static final long serialVersionUID = 6366021085463785872L;
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private int age;
/**
* 性别
*/
private Gender gender;
/**
* 生日
*/
private Date birthday;
/**
* 是否结婚
*/
private boolean married;
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 Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public boolean isMarried() {
return married;
}
public void setMarried(boolean married) {
this.married = married;
}
public Person() {
super();
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", gender=" + gender + ", birthday=" + birthday + ", married="
+ married + "]";
}
}
/**
* 表示性别的枚举类
* @author aming
*
*/
public enum Gender {
M(1,"男"),F(2,"女");
private int id;
private String genderName;
public String getGenderName() {
return genderName;
}
Gender(int id,String genderName){
this.id = id;
this.genderName = genderName;
}
public static Gender getGender(int id) {
for(Gender gender:values()) {
if(gender.id == id) {
return gender;
}
}
return M;
}
public static Gender getGender(String genderName) {
for(Gender gender:values()) {
if(gender.genderName == genderName) {
return gender;
}
}
return M;
}
}
@Override
public String getAsText() {
return String.valueOf((int)getValue());
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
try {
setValue(Integer.parseInt(text));
} catch(NumberFormatException e) {
throw new IllegalArgumentException(e);
}
}
@Override
public String getAsText() {
Gender value = (Gender)getValue();
return value.getGenderName();
}
@Override
public void setAsText(String value) throws IllegalArgumentException {
try {
setValue(Gender.getGender(Integer.valueOf(value)));
}catch(NumberFormatException ex) {
setValue(Gender.getGender(value));
}
}
private DateFormat df;
@Override
public String getAsText() {
Date date = (Date)getValue();
return df.format(date);
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
try {
setValue(df.parse(text));
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
public DatePropertyEditor() {
super();
this.df = new SimpleDateFormat("yyyy-MM-dd");
}
@Override
public String getAsText() {
return String.valueOf((boolean)getValue());
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
setValue(Boolean.valueOf(text));
}
public class PersonBeanInfo extends SimpleBeanInfo implements BeanInfo {
@Override
public PropertyDescriptor[] getPropertyDescriptors() {
List<PropertyDescriptor> list = new ArrayList<>();
try {
// 将Person中name与PropertyEditorSupport绑定
PropertyDescriptor namePropertyDescriptor = new PropertyDescriptor("name",Person.class);
namePropertyDescriptor.setPropertyEditorClass(PropertyEditorSupport.class);
// 将Person中age与IntegerPropertyEditor绑定
PropertyDescriptor agePropertyDescriptor = new PropertyDescriptor("age",Person.class);
agePropertyDescriptor.setPropertyEditorClass(IntegerPropertyEditor.class);
// 将Person中gender与GenderPropertyEditor绑定
PropertyDescriptor genderPropertyDescriptor = new PropertyDescriptor("gender", Person.class);
genderPropertyDescriptor.setPropertyEditorClass(GenderPropertyEditor.class);
// 将Person中birthday与DatePropertyEditor绑定
PropertyDescriptor birthdayPropertyDescriptor = new PropertyDescriptor("birthday",Person.class);
birthdayPropertyDescriptor.setPropertyEditorClass(DatePropertyEditor.class);
// 将Person中married与BooleanPropertyEditor绑定
PropertyDescriptor marriedPropertyDescriptor = new PropertyDescriptor("married",Person.class);
marriedPropertyDescriptor.setPropertyEditorClass(BooleanPropertyEditor.class);
list.add(namePropertyDescriptor);
list.add(agePropertyDescriptor);
list.add(genderPropertyDescriptor);
list.add(birthdayPropertyDescriptor);
list.add(marriedPropertyDescriptor);
return list.toArray(new PropertyDescriptor[list.size()]);
} catch (IntrospectionException ex) {
ex.printStackTrace();
}
return null;
}
}
name=arthurming age=18 gender=1 birthday=2017-10-24 married=true
@Test
public void test() throws IOException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {
Properties p = new Properties();
InputStream is =this.getClass().getClassLoader().getResourceAsStream("person.properties");
p.load(is);
BeanInfo beanInfo = new PersonBeanInfo();
PropertyDescriptor[] propertyDescriptoies = beanInfo.getPropertyDescriptors();
Person person = new Person();
for(PropertyDescriptor propertyDescriptor : propertyDescriptoies) {
String key = propertyDescriptor.getName();
String value = p.getProperty(key);
Method method = propertyDescriptor.getWriteMethod();
PropertyEditor pe = (PropertyEditor) propertyDescriptor.getPropertyEditorClass().newInstance();
if(pe.getClass() == PropertyEditorSupport.class) { //①
pe.setValue(value);
} else {
pe.setAsText(value);
}
method.invoke(person,pe.getValue());
}
System.out.println(person);
}
public void setAsText(String text) throws java.lang.IllegalArgumentException {
if (value instanceof String) {
setValue(text);
return;
}
throw new java.lang.IllegalArgumentException(text);
}
Person [name=arthurming, age=18, gender=M, birthday=Tue Oct 24 00:00:00 CST 2017, married=true]
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有