zoukankan      html  css  js  c++  java
  • java通过反射机制取javabean的属性值和方法

    package com.landray.kmss.km.mdm.maindata.jdbc.tools;

    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.lang.reflect.Modifier;

    public class Test {
     
     public static void main(String[] args){
      try {
       TestBean bean = new TestBean();
       String temp = "";
       bean.setAge("20");
       bean.setName("Shane");
       bean.setSex("boy");
       getClassInfo(bean);
      } catch (Exception e) {
       e.printStackTrace();
      }
     }
     
     public static void getClassInfo(Object obj) throws Exception {
      Class clas = Class.forName("com.landray.kmss.km.mdm.maindata.jdbc.tools.TestBean");
      if(!(clas.isInstance(obj))){
       System.out.println("传入的java实例与配置的java对象类型不符!");
       return;
      }
      Field[] fields = clas.getDeclaredFields();
      Method[] methods = clas.getDeclaredMethods();
      System.out.println("--------------- 属性如下  -----------------");
      for (Field field : fields) {
       int mod = field.getModifiers();
       System.out.println(Modifier.toString(mod) // 取得修饰符
         + " " + field.getType().getName() // 取得类型名
         + " " + field.getName()+ " " + field.get(obj)); // 取得属性名
      }
      System.out.println("--------------- 方法如下 -----------------");
      for (Method method : methods) {
       
       StringBuffer methodBuffer = new StringBuffer();
       int mod = method.getModifiers();
       methodBuffer.append(Modifier.toString(mod)) // 取得修饰符
         .append(" ").append(method.getReturnType().getName()) // 取得返回值类型
         .append(" ").append(method.getName()) // 取得方法名
         .append("(");
       for (Class ss : method.getParameterTypes()) {
        methodBuffer.append(ss.getName()).append(","); // 取得参数
       }
       if(methodBuffer.lastIndexOf(",")>=0)
        methodBuffer.deleteCharAt(methodBuffer.lastIndexOf(",")); // 去掉最后一个","
       methodBuffer.append(")");
       System.out.println(methodBuffer.toString()); // 打印输出
      }

     }

    }

  • 相关阅读:
    单例模式中的懒汉式以及线程安全性问题
    单例模式中的饿汉模式
    自我管理的8个好习惯
    从java字节码角度看线程安全性问题
    工作上的建议
    从线程的优先级看饥饿问题
    多线程存在哪些风险
    DirectX SDK (June 2010)安装错误S1023,解决方法
    Microsoft DirectX SDK 2010 版本下载
    如果程序集是从 Web 上下载的,即使它存储于本地计算机,Windows 也会将其标记为 Web 文件,http://go.microsoft.com/fwlink/?LinkId=179545
  • 原文地址:https://www.cnblogs.com/cookray/p/2085422.html
Copyright © 2011-2022 走看看