Java反射机制(初步认识)

简介: Java反射机制(初步认识)

反射的实质:

就是在得到Class对象之后,反向获取Class对象的对象。
解读:Class的对象好比一个类,反向获取Class对象(也就是类)的对象。
其中类字面常量反射,通过把xxx.class字节码文件反射回去生成编译前的类。
不清楚Class类的可以点击查看本人另一篇博文:Class与class的区别

对Class类解读:

我们通常认为类是对象的抽象和集合,Class就相当于是对类的抽象和集合。
也可以认为对象是类的实例,类是Class的实例。

运用反射机制:

在获得Class对象后我们可以调用:
Class对象.getDeclaredConstructor().newInstance()
方法去获取Class对象的对象
例子:

package Task;
import org.junit.Test;

public class Try0 {
    
    @Test
    public void toTry() throws Exception {
    
        //forName方法:参数为其类的路径
        Class a = Class.forName("Task.Try1");
        System.out.println(a);

        //通过对象得到类
        Try1 try1 = new Try1();
        Class b = try1.getClass();
        System.out.println(b);

        //类字面常量,通过把xxx.class字节码文件反射回去生成编译前的类
        Class c = Try1.class;
        System.out.println(c);

        //JAVA9之后废弃newInstance()方法
        //反射机制,用Class的对象a(Try1类型) 生成了Try1的对象try2,并且调用了try2的toPrint方法。 
        Try1 try2 = (Try1) a.getDeclaredConstructor().newInstance();
        System.out.println(try2+try2.toPrint());
        
        //反射机制,用Class的对象b(Try1类型) 生成了Try1的对象try3,并且调用了try3的toPrint方法。
        Try1 try3 = (Try1) b.getDeclaredConstructor().newInstance();
        System.out.println(try3+try3.toPrint());
        
        //反射机制,用Class的对象c(Try1类型) 生成了Try1的对象try4,并且调用了try4的toPrint方法。
        Try1 try4 = (Try1) c.getDeclaredConstructor().newInstance();
        System.out.println(try4+try4.toPrint());
    }
}

class Try1 {
    
    public String toPrint(){
    
        return "调用了toPrint";
    }
}


输出结果:
在这里插入图片描述
可以看到生成了不同的Try1对象,和new出来的对象一样,可以使用对象的方法等等。

目录
相关文章
|
11天前
|
缓存 前端开发 安全
java的双亲委派机制
java的双亲委派机制
22 5
|
5天前
|
Java
【专栏】Java中的反射机制与应用实例
【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
|
2天前
|
Java 程序员 开发者
深入理解Java并发编程:线程同步与锁机制
【4月更文挑战第30天】 在多线程的世界中,确保数据的一致性和线程间的有效通信是至关重要的。本文将深入探讨Java并发编程中的核心概念——线程同步与锁机制。我们将从基本的synchronized关键字开始,逐步过渡到更复杂的ReentrantLock类,并探讨它们如何帮助我们在多线程环境中保持数据完整性和避免常见的并发问题。文章还将通过示例代码,展示这些同步工具在实际开发中的应用,帮助读者构建对Java并发编程深层次的理解。
|
3天前
|
敏捷开发 机器学习/深度学习 Java
Java中的异常处理机制深入理解与实践:持续集成在软件测试中的应用探索自动化测试在敏捷开发中的关键作用
【4月更文挑战第29天】在Java编程中,异常处理是一个重要的概念。它允许开发者在程序执行过程中遇到错误或异常情况时,能够捕获并处理这些异常,从而保证程序的稳定运行。本文将详细介绍Java中的异常处理机制,包括异常的分类、异常的处理方式以及自定义异常等内容。 【4月更文挑战第29天】 随着敏捷开发和DevOps文化的兴起,持续集成(CI)已成为现代软件开发周期中不可或缺的一环。本文将探讨持续集成在软件测试领域内的关键作用、实施策略以及面临的挑战。通过对自动化构建、测试用例管理、及时反馈等核心要素的详细分析,揭示持续集成如何提高软件质量和加速交付过程。 【4月更文挑战第29天】 在当今快速发
|
3天前
|
安全 Java 测试技术
利用Java反射机制提高Spring Boot的代码质量:概念与实战
【4月更文挑战第29天】Java反射机制提供了一种强大的方法来在运行时检查或修改类和对象的行为。在Spring Boot应用中,合理利用反射可以提高代码的灵活性和可维护性。本篇博客将探讨Java反射的核心概念,并展示如何通过反射提高Spring Boot项目的代码质量。
16 0
|
4天前
|
Java API
Java包机制及JavaDoc
Java包机制及JavaDoc
|
5天前
|
安全 Java
【JAVA】Java并发编程中的锁升级机制
【JAVA】Java并发编程中的锁升级机制
|
5天前
|
设计模式 Java Spring
来聊聊Java的反射机制(下)
来聊聊Java的反射机制(下)
7 0
|
5天前
|
Java 编译器 Spring
来聊聊Java的反射机制(上)
来聊聊Java的反射机制
9 0
|
7天前
|
Java 数据库连接
深入理解Java异常处理机制
【4月更文挑战第24天】本文将探讨Java中的异常处理机制,包括异常的概念、分类、捕获和抛出等方面。通过深入了解异常处理机制,可以帮助我们编写更加健壮的程序,提高代码的可读性和可维护性。