zoukankan      html  css  js  c++  java
  • Java反射得到属性的值和设置属性的值

    package com.whbs.bean;  
       
    public class UserBean {  
        private Integer id;  
        private int age;  
        private String name;  
        private String address;  
         
        public UserBean(){  
           System.out.println("实例化");  
        }  
         
        public Integer getId() {  
           return id;  
        }  
        public void setId(Integer id) {  
           this.id = id;  
        }  
        public int getAge() {  
           return age;  
        }  
        public void setAge(int age) {  
           this.age = age;  
        }  
        public String getName() {  
           return name;  
        }  
        public void setName(String name) {  
           this.name = name;  
        }  
        public String getAddress() {  
           return address;  
        }  
        public void setAddress(String address) {  
           this.address = address;  
        }  
         
         
         
    }  
       
    2 > 反射测试  
       
    package com.whbs.test;  
       
    import java.lang.reflect.Field;  
    import java.lang.reflect.Method;  
       
    import com.whbs.bean.UserBean;  
       
    public class Test1 {  
       
        public static void main(String[] args) throws Exception {  
       
            
           /* 
            * 实列化类 方法1 
            */  
           //String classPath = "com.whbs.bean.UserBean";  
           //Class cla = Test1.class.getClassLoader().loadClass(classPath);  
           //Object ob = cla.newInstance();  
            
           /* 
            * 实列化类 方法2 
            */  
           UserBean bean = new UserBean();  
           bean.setId(100);  
           bean.setAddress("武汉");  
            
           //得到类对象  
           Class userCla = (Class) bean.getClass();  
            
           /* 
            * 得到类中的所有属性集合 
            */  
           Field[] fs = userCla.getDeclaredFields();  
           for(int i = 0 ; i < fs.length; i++){  
               Field f = fs[i];  
               f.setAccessible(true); //设置些属性是可以访问的  
               Object val = f.get(bean);//得到此属性的值     
            
               System.out.println("name:"+f.getName()+"	 value = "+val);  
                
               String type = f.getType().toString();//得到此属性的类型  
               if (type.endsWith("String")) {  
                  System.out.println(f.getType()+"	是String");  
                  f.set(bean,"12") ;        //给属性设值  
               }else if(type.endsWith("int") || type.endsWith("Integer")){  
                  System.out.println(f.getType()+"	是int");  
                  f.set(bean,12) ;       //给属性设值  
               }else{  
                  System.out.println(f.getType()+"	");  
               }  
                
           }  
            
            
           /* 
            * 得到类中的方法 
            */  
           Method[] methods = userCla.getMethods();  
           for(int i = 0; i < methods.length; i++){  
               Method method = methods[i];  
               if(method.getName().startsWith("get")){  
                  System.out.print("methodName:"+method.getName()+"	");  
                  System.out.println("value:"+method.invoke(bean));//得到get 方法的值  
               }  
           }  
        }  
       
    }  
  • 相关阅读:
    CodeSmith实用技巧(十四):使用Progress对象
    .NET设计模式(5):工厂方法模式(Factory Method)
    CodeSmith实用技巧(七):从父模版拷贝属性
    CodeSmith实用技巧(十一):添加设计器的支持
    CodeSmith实用技巧(六):使用XML 属性
    CodeSmith实用技巧(三):使用FileDialogAttribute
    CodeSmith实用技巧(十二):自动执行SQL脚本
    CodeSmith中实现选择表字段的几点想法
    CodeSmith开发系列资料总结
    你真的了解.NET中的String吗?
  • 原文地址:https://www.cnblogs.com/yaomajor/p/8157657.html
Copyright © 2011-2022 走看看