首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

Java 软件管理 读取种的属性及其字段,注解相关

2013-04-07 
Java 软件管理 读取类的属性及其字段,注解相关package com.test.modelimport java.io.Serializableimpor

Java 软件管理 读取类的属性及其字段,注解相关

package com.test.model;import java.io.Serializable;import java.util.Date;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table; @Entity@Table(name="user")public class User implements Serializable {/** *  */private static final long serialVersionUID = -4670967630657562910L;public static int testId = 3;@Id@Column(name="id")private String id ;@Column(name="createDate")private Date createDate;@Column(name="user_name")private String userName;@Column(name="user_password")private String userPassword;public String getId() {return id;}public void setId(String id) {this.id = id;}public Date getCreateDate() {return createDate;}public void setCreateDate(Date createDate) {this.createDate = createDate;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPassword() {return userPassword;}public void setUserPassword(String userPassword) {this.userPassword = userPassword;} }

?

测试类

package com.test.fn;import java.beans.PropertyDescriptor;import java.lang.annotation.Annotation;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import javax.persistence.Column;import javax.persistence.Table;import org.apache.commons.beanutils.PropertyUtils; import com.test.model.User;public class UserRead {public static void main(String[] args) {UserRead.readClassInfo(User.class);UserRead.readFieldOfClassInfo(User.class);UserRead.setPropertyTest(User.class);UserRead.propertyTest(User.class);//}//读取类的属性public static void propertyTest(Class<?> clazz){System.out.println("/************************************************/");System.out.println("/**                                            **/");System.out.println("/**            开始  propertyTest测试                                         **/");System.out.println("/**                                            **/");System.out.println("/**                                            **/");System.out.println("/************************************************/");PropertyDescriptor[] properties = PropertyUtils.getPropertyDescriptors(clazz);String propertyName = null;Field f = null;String disPlayName = "";String name = "";Method readMethod = null;Method writeMethod = null;for (PropertyDescriptor p : properties) { //获得此特性的编程名称propertyName = p.getName();try {f = clazz.getDeclaredField(propertyName);disPlayName = p.getDisplayName();name = p.getName();readMethod = p.getReadMethod();writeMethod = p.getWriteMethod();System.out.println("disPlayName="+disPlayName);System.out.println("name="+name);if(readMethod!=null){System.out.println("readMethod="+readMethod.getName());}if(writeMethod!=null){System.out.println("writeMethod="+writeMethod.getName());}} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchFieldException e) {System.out.println("异常了"); System.out.println("propertyName="+propertyName);e.printStackTrace();}}}public static void setPropertyTest(Class<?> clazz){try {Object obj = clazz.newInstance();PropertyUtils.setProperty(obj, "id", "9999999999");System.out.println("赋值后的结果id为:"+((User)obj).getId());} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** *  * 读取某个类的有哪些字段 */public static void readFieldOfClassInfo(Class<?> clazz){Field[] fields = clazz.getDeclaredFields();  Field field = null;String fieldName = "";Class<?> fieldClass = null;int modifier = 0;boolean isColumnPresent = false;Annotation annotation = null;for (int i=0;i<fields.length;i++) {field = fields[i];fieldName = field.getName();fieldClass = field.getType();modifier = field.getModifiers(); if(Modifier.isPublic(modifier )){System.out.println("-----public");}else if(Modifier.isPrivate(modifier )){System.out.println("-----private");}if(Modifier.isStatic(modifier )){System.out.println("-----static");}System.out.println("-----字段类型"+fieldClass.getName());System.out.println("-----字段名称"+fieldName);System.out.println("-----修饰符:"+modifier);//判断字段有没有出现Column.class类的注解isColumnPresent = field.isAnnotationPresent(Column.class);if(isColumnPresent){//展示超类Annotation,此处有意为之/*** * Column c = field.getAnnotation(Column.class); */annotation = field.getAnnotation(Column.class);Column c = (Column)annotation;System.out.println("column属性是:"+c.name());}System.out.println("      ");System.out.println("      ");}}/** *读取class的相关注解  **/public static void readClassInfo(Class<?> clazz){String className = clazz.getName();System.out.println("类名称是:"+className);Class<?> supserClass =clazz.getSuperclass();System.out.println("父类是:"+supserClass.getName());//判断类有没有出现某个注解if(clazz.isAnnotationPresent(Table.class)){ Table table = (Table) clazz.getAnnotation(Table.class);  String  tableName = table.name();  System.out.println("表名称是:"+tableName);} }}

?

?

?

热点排行