博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用反射获取类的方法及属性
阅读量:7079 次
发布时间:2019-06-28

本文共 2880 字,大约阅读时间需要 9 分钟。

hot3.png

1、创建一个类

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

import java.io.Serializable;

/**

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

/**

 * 利用反射获取类信息
 *  LJB
 *  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;

/**

 * 测试运行类
 *  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    弹出输入全路径对话框

140619_q3Qn_2320342.png

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
------获取属性信息结束-------

转载于:https://my.oschina.net/u/2320342/blog/380750

你可能感兴趣的文章
实现Map接口(hash原理)
查看>>
跟我学算法-图像识别之图像分类(上)(基础神经网络, 卷积神经网络(CNN), AlexNet,NIN, VGG)...
查看>>
面向对象程序设计第二单元总结
查看>>
hdu 4003 Find Metal Mineral
查看>>
当你和世界不一样
查看>>
APP数据运营的11个流程步骤
查看>>
linux 内核生成
查看>>
C#高级编程9 第18章 部署
查看>>
Sql语句常用关键字
查看>>
数据结构与算法面试总结
查看>>
note 0 Python介绍及Python IDE环境安装 Spyder with Anaconda
查看>>
LeetCode - Maximum Subarray
查看>>
数据库附加或还原后用户权限问题
查看>>
C# String.Format格式说明
查看>>
onload事件
查看>>
静雅斋目录导航
查看>>
PHP 图片添加水印
查看>>
第四章~~!!!~switch结构
查看>>
关于程序堆栈的解释
查看>>
BZOJ4033 HAOI2015 树上染色
查看>>