Java基础之反射应用(如何获取对象的构造方法、属性以及、基本方法)

版权声明:学习之路,任重道远 https://blog.csdn.net/weixin_43359405/article/details/83349882

反射实战:新建Student类,利用反射原理输出Student的构造方法,属性,普通方法,参数列表等等信息。

反射资料:查询java_API之:java.lang.reflect包下。

Student类:

package com.briup.ch24;
public class Student
{
	private String name;
	private int age;
	public Student(){
	
	}
	public Student(String name,int age){
	 this.name=name;
	 this.age=age;
	}
	public void setName(String name){
	 this.name=name;
	}
	public String getName(){
	 return name;
	}
	public void setAge(int age){
	 this.age=age;
	}
	public int getAge(){
	 return age;
	}
        public static void test(){
          System.out.println("hello test");
        }
}

ReflectTest类:

package com.briup.ch24;

import java.lang.reflect.*;

public class ReflectTest
{
  public static void main(String... args) throws Exception{
     //1.获取类镜像
	 Class clz=Class.forName("com.briup.ch24.Student");
	 //2.获取该类中所有的属性
	  Field[] f=clz.getDeclaredFields();
	  for(Field temp:f){
	        //获取属性的数据类型
		Class c=temp.getType();
		//获取属性的名字
		String name=temp.getName();
		//获取属性修饰符
		int m=temp.getModifiers();
		System.out.println("属性:"+c+" 名字:"+name+" 修饰符:"+m);
	  }
	  //3.获取该类中方法
	  Method[] method=clz.getDeclaredMethods();
	  for(Method temp:method){
	        //获取方法名
		String name=temp.getName();
		//获取返回值类型
		Class r=temp.getReturnType();
		//获取方法的修饰符
                int m=temp.getModifiers();
		//获取参数列表类型
                Class[] c=temp.getParameterTypes();
                String str="";
		 for(Class t:c){
		  str = str + " " + t;
		 }
		System.out.println("方法名:"+name+" 返回类型:"+r+" 修饰符:"+m+" 参数列表:"+str);
	  }
	  //4.获取所有构造器
	  Constructor[] cst= clz.getDeclaredConstructors();
	  for(Constructor cstt:cst){
	   //获取构造器名字
	   String name=cstt.getName();
	   //获取构造器的修饰符
	   int m=cstt.getModifiers();
	   //获取构造器的参数列表
           Class[] c=cstt.getParameterTypes();
           String str="";
	   for(Class t:c){
		  str =  str + " " + t;
	   }
	   System.out.println("构造器名字:"+name+" 构造器修饰符:"+ m +" 参数列表:"+str);
	  }
  }
}

运行结果:

猜你喜欢

转载自blog.csdn.net/weixin_43359405/article/details/83349882
今日推荐