利用反射獲取類的方法及屬性

一、建立一個類java

package com.ljb.app.model;// 下面用到的路徑app

import java.io.Serializable;maven

/**
 * 序列化實體類
 * @author  LJB
 * @version  2015年2月10日
 */
public class Student implements Serializable{
 private String name;
 private int age;
 private String gender;
 private transient String password;
 
 public Student(String name, int age, String gender , String password) {
  super();
  this.name = name;
  this.age = age;
  this.gender = gender;
  this.password = password;
 }測試

 public String getName() {
  return name;
 }this

 public void setName(String name) {
  this.name = name;
 }spa

 public int getAge() {
  return age;
 }.net

 public void setAge(int age) {
  this.age = age;
 }對象

 public String getGender() {
  return gender;
 }get

 public void setGender(String gender) {
  this.gender = gender;
 }io

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }
}

說明:能夠不用序列化

二、建立經過類的全路徑獲取類的方法及屬性的類

package com.ljb.app.my_first_maven;

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

import javax.swing.JOptionPane;

/**
 * 利用反射獲取類信息
 * @author  LJB
 * @version  2015年2月26日
 */
public class ReflectionDemo {
 
 public ReflectionDemo () {
  String classPath = JOptionPane.showInputDialog(null, "輸入類的全路徑:");
  
  try {
   // 根據類的全路徑加載類,返回該類的Class對象
   Class cla = Class.forName(classPath);
   
   System.out.println("------獲取方法信息-------");
   Method[] methods = cla.getDeclaredMethods();
   for (Method meth:methods) {
    System.out.println(meth.toString());
   }
   System.out.println("------獲取方法信息結束-------");
   
   System.out.println("------獲取屬性信息-------");
   Field[] fields = cla.getDeclaredFields();
   for (Field fild:fields) {
    System.out.println(fild.toString());
   }
   System.out.println("------獲取屬性信息結束-------");
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

三、建立運行類

package com.ljb.app.my_first_maven;

/**
 * 測試運行類
 * @author  LJB
 * @version 2015年2月28日
 */
public class TestReflection {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  ReflectionDemo rd = new ReflectionDemo();
 }

}

四、運行

4.1    彈出輸入全路徑對話框

4.2    全路徑

    com.ljb.app.model.Student

4.3    運行結果

------獲取方法信息-------public int com.ljb.app.model.Student.getAge()public void com.ljb.app.model.Student.setAge(int)public java.lang.String com.ljb.app.model.Student.getGender()public void com.ljb.app.model.Student.setGender(java.lang.String)public void com.ljb.app.model.Student.setPassword(java.lang.String)public java.lang.String com.ljb.app.model.Student.getName()public void com.ljb.app.model.Student.setName(java.lang.String)public java.lang.String com.ljb.app.model.Student.getPassword()------獲取方法信息結束-------------獲取屬性信息-------private java.lang.String com.ljb.app.model.Student.nameprivate int com.ljb.app.model.Student.ageprivate java.lang.String com.ljb.app.model.Student.genderprivate transient java.lang.String com.ljb.app.model.Student.password------獲取屬性信息結束-------

相關文章
相關標籤/搜索