反射-获得类的类对象的多种方式

第一种:forName("知道字符串")

第二种:知道它的对象,但不知道它的对象是什么

第三种:在知道是某个类的情况下直接Person.class这里以Person这个类作为试例

越往上知道的越模糊。

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

public class Test01 {
    public static void main(String[] args) throws ClassNotFoundException {

         //Person person = new Person();
        // test(person);
        // 第一种
        // Class<?> clazz = Class.forName("java.lang.String");

        // 第二种
        // test(new Integer(0)))
        
        // 第三种
        test()
    }

    // 第二种
    public static void test(Object obj) {
        /* Class在这虽然不知道它的泛型是什么,但是我知道是继承于它的子类
        *也能获得一个类的类对象
        * */
        // 第三种
       // Class<? extends Object> cl = Person.class;
       
        Class<? extends Object> cl = obj.getClass();
        Method[] methods = cl.getDeclaredMethods();
        for (Method m : methods) {
            System.out.println(m);
        }
        System.out.println("---------------");
        Constructor<?>[] constructors = cl.getConstructors();
        for (Constructor c : constructors) {
            System.out.println(c);
        }
        System.out.println("---------------------------");
        Field[] fields = cl.getDeclaredFields();
        for (Field f : fields) {
            System.out.println(f);
        }
    }
}

 

Person类

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值