java反射-打印clazz

本文通过三个Java反射机制中的核心方法:获取类名、简化类名和打印类信息,深入浅出地介绍了Java反射机制的基本用法及应用场景。反射机制允许运行时加载、检查甚至修改类和对象,为开发者提供了极大的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分别打印:
clazz
clazz.getName()
clazz.getSimpleName()

在这里插入图片描述
在这里插入图片描述

### Java 反射高级特性详解 #### 获取类的信息 Java反射机制允许程序在运行期间动态获取类的相关信息。通过`Class`类可以访问到类的结构,包括字段、方法以及构造器等[^1]。 ```java import java.lang.reflect.Field; import java.lang.reflect.Method; public class ReflectionInfo { public static void main(String[] args) throws Exception { Class<?> clazz = Class.forName("java.util.ArrayList"); // 输出所有公共字段名称及其修饰符 Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { System.out.println(field); } // 输出所有声明的方法签名 Method[] methods = clazz.getDeclaredMethods(); for (Method method : methods) { System.out.println(method.getName() + "()" ); } } } ``` #### 动态创建对象并调用其成员 利用反射不仅可以查询类定义还可以实例化新对象甚至执行特定的操作。下面的例子展示了如何使用构造函数来构建一个新的字符串对象,并打印出来[^3]。 ```java import java.lang.reflect.Constructor; public class DynamicInstanceExample { public static void main(String[] args) { try { Class<?> clazz = Class.forName("java.lang.String"); Constructor<?> constructor = clazz.getConstructor(String.class); // 创建对象实例 Object instance = constructor.newInstance("Hello, Reflection!"); System.out.println("Instance: " + instance); } catch (Exception e) { e.printStackTrace(); } } } ``` #### 修改私有属性值 即使某些变量被标记为private也可以借助于setAccessible(true),从而绕过正常的存取控制检查来进行读写操作。 ```java import java.lang.reflect.Field; public class PrivateAccessTest { private String secretMessage = "This is a hidden message."; public static void main(String[] args) throws Exception{ PrivateAccessTest testObject = new PrivateAccessTest(); Class<?> clazz = testObject.getClass(); Field field = clazz.getDeclaredField("secretMessage"); // 设置可访问标志位为true field.setAccessible(true); // 更改私有字段的内容 field.set(testObject,"New Message!"); // 打印修改后的结果 System.out.println((String)field.get(testObject)); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值