【注解和反射6】通过一个类对应的Class对象获得该类的一些信息

上代码

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

//通过获得Person对应的Class对象获,得Person类的一些信息
public class Test04 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {
        Class<?> aClass = Class.forName("com.yiheng.yiheng_02_reflection.Person");
        System.out.println(aClass);
        //获得该类的名字
        System.out.println("获得该类的名字");
        System.out.println(aClass.getName());//包名+类名:com.yiheng.yiheng_02_reflection.Person
        System.out.println(aClass.getSimpleName());//类名:Person

        //获得类的属性
        System.out.println("获得类的属性");
        Field[] fields = aClass.getFields();//获得public属性
        for (Field field : fields) {
            System.out.println(field);
        }
        Field[] declaredFields = aClass.getDeclaredFields();//获得全部属性
        for (Field declaredField : declaredFields) {
            System.out.println(declaredField);
        }
        System.out.println(aClass.getDeclaredField("name"));//获得指定的属性
        //获得类中的方法
        System.out.println("获得方法");
        Method[] methods = aClass.getMethods();//获得public方法
        for (Method method : methods) {
            System.out.println("public方法:"+method);
        }
        Method[] declaredMethods = aClass.getDeclaredMethods();//获得全部方法
        for (Method declaredMethod : declaredMethods) {
            System.out.println("全部方法:"+declaredMethod);
        }
        //指定方法
        //加参数以防有方法重载
        System.out.println(aClass.getDeclaredMethod("getName",null));//获得指定方法
        System.out.println(aClass.getDeclaredMethod("setName", String.class));
        //获得类的构造器
        System.out.println("类的构造器");
        Constructor<?>[] constructors = aClass.getConstructors();//获得public构造器
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor);
        }
        Constructor<?>[] declaredConstructors = aClass.getDeclaredConstructors();//获得全部的构造器
        for (Constructor<?> declaredConstructor : declaredConstructors) {
            System.out.println(declaredConstructor);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值