利用反射获取类的方法及属性
利用反射获取类的方法及属性
学而时习之 发表于3年前
利用反射获取类的方法及属性
  • 发表于 3年前
  • 阅读 23
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 反射获取类的方法及属性

1、创建一个类

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

import java.io.Serializable;

/**
 * 序列化实体类
 * @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;
 }

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

 public int getAge() {
  return age;
 }

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

 public String getGender() {
  return gender;
 }

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

 public String getPassword() {
  return password;
 }

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

说明:可以不用序列化

2、创建通过类的全路径获取类的方法及属性的类

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();
  }
 }
}

3、创建运行类

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、运行

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.name
private int com.ljb.app.model.Student.age
private java.lang.String com.ljb.app.model.Student.gender
private transient java.lang.String com.ljb.app.model.Student.password
------获取属性信息结束-------

共有 人打赏支持
粉丝 30
博文 92
码字总数 42877
×
学而时习之
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: