What is opens and reflection in Java?

In Java, opens and reflection are concepts that relate to the ability of Java programs to access and manipulate classes and their members dynamically at runtime. The opens directive is part of the Java Platform Module System, allowing specific packages to be accessed reflectively by other modules, which is essential for frameworks like Spring and Hibernate that rely on reflection to function effectively.

Reflection, on the other hand, is a powerful feature that enables Java code to inspect and manipulate classes, methods, fields, and constructors at runtime without knowing the names of the classes, methods, etc. at compile time. This ability gives developers flexibility in creating dynamic and extensible applications.

Example of Reflection in Java

import java.lang.reflect.Method; public class ReflectionExample { public void sayHello() { System.out.println("Hello, World!"); } public static void main(String[] args) { try { // Get the class object Class> clazz = Class.forName("ReflectionExample"); // Create an instance of the class Object obj = clazz.getDeclaredConstructor().newInstance(); // Get the method to invoke Method method = clazz.getMethod("sayHello"); // Invoke the method method.invoke(obj); } catch (Exception e) { e.printStackTrace(); } } }

opens reflection Java reflection Java module system