当前位置 : 主页 > 编程语言 > c++ >

反射的基本用法,反射可可通过类名拿到类的所有方法,字段,值等。

来源:互联网 收集:自由互联 发布时间:2021-07-03
反射的小实例 import java.lang.reflect.Field;import java.lang.reflect.Method;import javax.swing.JOptionPane;/** *本类用于测试反射API,利用用户输入类的全路径,*找到该类所有的成员方法和成员属性 */publ
反射的小实例
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import javax.swing.JOptionPane;
/**
  *本类用于测试反射API,利用用户输入类的全路径,
*找到该类所有的成员方法和成员属性
  */
public class MyTest {
 
    /**
     *构造方法
     */
    public MyTest(){
      
       String classInfo=JOptionPane.showInputDialog(null,"输入类全路径");//要求用户输入类的全路径
      
       try {
           Class cla=Class.forName(classInfo);//根据类的全路径进行类加载,返回该类的Class对象
          
           Method[] method=cla.getDeclaredMethods();//利用得到的Class对象的自审,返回方法对象集合
          
           for(Method me:method){//遍历该类方法的集合
              System.out.println(me.toString());//打印方法信息
           }
          
           System.out.println("********");
          
           Field[] field=cla.getDeclaredFields();//利用得到的Class对象的自审,返回属性对象集合
           for(Field me:field){ //遍历该类属性的集合
              System.out.println(me.toString());//打印属性信息
           }
       } catch (ClassNotFoundException e) {
           e.printStackTrace();
       }
    }
    public static void main(String[] args) {
       new MyTest();
    }
}
运行的时候,我们输入javax.swing.JFrame,那么运行结果如下:
 public void javax.swing.JFrame.remove(java.awt.Component)
public void javax.swing.JFrame.update(java.awt.Graphics)
…………
 
********
public static final int javax.swing.JFrame.EXIT_ON_CLOSE
private int javax.swing.JFrame.defaultCloseOperation
 …………
网友评论