利用反射获取类的方法及属性

一、建立一个类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------获取属性信息结束-------

相关文章
相关标签/搜索