如何获取一个Class类,以及怎么用

如何获取一个Class的对象?

public static void main(String[] args){
        //第一种
        Class c1 = String.class;

        //第二种
        //在Java中,每个对象都有一个getClass()方法,该方法返回对象的Class对象,用于表示该对象所属的类。
        String s = "hello,world";
        Class c2 = s.getClass();

        //第三种,以Book类为例,其实就是动态加载类,注意捕获异常,因为类有可能不存在 
        try {
            Class c3 = Class.forName("com.test.Book");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

Class的对象我们怎么用? 

public class Student {
    private String name;
    private int age;

    public static void main(String[] args){
        //一般我们把Class的对象叫字节码
        Class c = Student.class;

        // 外部普通类
        System.out.println("Student类名是:" + c.getName());
        System.out.println("Student类的简单类名是:" + c.getSimpleName());
        System.out.println("Student类有" + c.getDeclaredFields().length + "个字段");

        /**
         * ....
         * 我们可以通过 c (也就是Student这个类的对象,或者你也可以叫做Student类的字节码)
         * 拿到Student类中所有的方法名,方法数,字段名,字段数量,甚至你还可以通过Method来调用方法
         * 只要查查API,熟悉了API,就能做到
         * 暂时我们只打印简单
         */
    }
}

 Class对象怎么调用类的方法?

Class对象可以用来调用类的方法,具体可以通过以下步骤实现:

  1. 获取类的Class对象,可以使用Class.forName()方法或者类字面常量方式获取,例如 Class c = MyClass.class;

  2. 通过Class对象获取方法的Method对象,可以使用getMethod()方法或者getDeclaredMethod()方法,前者只能获取公共方法,后者可以获取所有方法,包括私有方法;

  3. 通过Method对象调用方法,可以使用invoke()方法,该方法可以传入方法所在对象和方法参数,然后执行该方法并返回结果。

例如,假设有一个名为MyClass的类,其中定义了一个名为printMessage的公共方法,可以使用如下代码调用该方法:

Class c = Class.forName("com.example.MyClass");
Object obj = c.newInstance();
Method method = c.getMethod("printMessage", String.class);
method.invoke(obj, "Hello, World!");

在这里,代码首先获取MyClass类的Class对象,然后创建该类的一个实例对象。接着,使用getMethod()方法获取printMessage方法的Method对象,该方法有一个String类型的参数。最后,通过Method对象调用printMessage方法,并传入参数 "Hello, World!",该方法将打印输出 "Hello, World!"。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值