首页 > 代码库 > java反射机制
java反射机制
1.获取java entity里的属性有俩个方法:getDeclaredField()和getField();
getField() 只能获取public类型的属性;
getDeclaredField() 能获取类或接口声明的所有属性;
如:
import java.lang.reflect.*; public class HellWorld{ private double a; public static final int b = 16; String str = "helloword"; public static void main(String args[]) { try { Class cls = Class.forName("HellWorld"); Field fieldlist[] = cls.getDeclaredFields(); for (int i = 0; i < fieldlist.length; i++) { Field fld = fieldlist[i]; System.out.println("name = " + fld.getName()); //获取属性名 System.out.println("decl class = " + fld.getDeclaringClass()); //所属的声明类 System.out.println("type = " + fld.getType()); //获取属性类型 int mod = fld.getModifiers(); System.out.println("modifiers = " + Modifier.toString(mod)); //属性成员的修饰语 System.out.println("///////////////"); } } catch (Throwable e) { System.err.println(e); } } }
输出:
1 name = a 2 decl class = class HellWorld 3 type = double 4 modifiers = private 5 ///////////////// 6 name = b 7 decl class = class HellWorld 8 type = int 9 modifiers = public static final10 /////////////////11 name = str12 decl class = class HellWorld13 type = class java.lang.String14 modifiers = 15 /////////////////
使用场景:可以根据页面post/get过来的参数值,初始化java entity里的对应属性的值。
如:POST a=2&str=test
1 public void init(HttpServletRequest request){ 2 try { 3 String queryBody = IOUtils.toString(request.getInputStream()); 4 5 Class cls = Class.forName("HelloWorld"); 6 7 if(StringUtils.isNotBlank(queryBody)){ 8 StringTokenizer st = new StringTokenizer(queryBody, "&"); 9 10 while (st.hasMoreTokens()) {11 String pairs = st.nextToken();12 String key = pairs.substring(0, pairs.indexOf(‘=‘));13 String value = http://www.mamicode.com/pairs.substring(pairs.indexOf(‘=‘) + 1);14 15 if(StringUtils.isBlank(value))16 continue;17 18 value = http://www.mamicode.com/URLDecoder.decode(value,"UTF-8");19 20 Field fld = cls.getDeclaredField(key);21 Class type = fld.getType();22 if(type.toString().equalsIgnoreCase("double")){23 fld.setDouble(this, Double.parseDouble(value));24 }else{25 fld.set(this, value);26 }27 }28 }29 30 } catch(UnsupportedEncodingException e){
31 } catch (IOException e) {
32 } catch (SecurityException e) {
33 } catch (NoSuchFieldException e) {
34 } catch (ClassNotFoundException e) {
35 } catch (IllegalArgumentException e) {
36 } catch (IllegalAccessException e) {
37 }38 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。