java反射三种方法有哪些

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。

Java反射机制主要提供了以下三种功能:

1、在运行时判断任意一个对象所属的类;

2、在运行时构造任意一个类的对象;

3、在运行时调用任意一个对象的方法。

下面将详细介绍这三种功能的实现方法。

在运行时判断任意一个对象所属的类

要获取对象的类信息,可以使用getClass()方法。

Object obj = new String("Hello, World!");
Class clazz = obj.getClass();
System.out.println(clazz); // 输出:class java.lang.String

在运行时构造任意一个类的对象

要构造一个类的对象,首先需要获取该类的Class对象,然后通过newInstance()方法创建对象。

try {
    Class clazz = Class.forName("java.lang.String");
    Object obj = clazz.newInstance();
    System.out.println(obj); // 输出:null
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
    e.printStackTrace();
}

注意:newInstance()方法已经过时,建议使用getDeclaredConstructor().newInstance()方法替代。

try {
    Class clazz = Class.forName("java.lang.String");
    Object obj = clazz.getDeclaredConstructor().newInstance();
    System.out.println(obj); // 输出:null
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
    e.printStackTrace();
}

在运行时调用任意一个对象的方法

要调用对象的方法,首先需要获取该对象的Class对象,然后通过getMethod()方法获取Method对象,最后通过invoke()方法调用方法。

try {
    Class clazz = Class.forName("java.lang.String");
    Object obj = clazz.getDeclaredConstructor().newInstance();
    Method method = clazz.getMethod("length");
    Integer length = (Integer) method.invoke(obj);
    System.out.println(length); // 输出:0
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
    e.printStackTrace();
}

Java反射机制是一种强大的工具,可以在运行时动态地获取类的信息、创建对象和调用方法,反射操作相对复杂且效率较低,因此在实际开发中应谨慎使用。

网页标题:java反射三种方法有哪些
浏览路径:http://www.mswzjz.cn/qtweb/news30/376230.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能