JAVA反射机制:简单解释与小例子

本文介绍了JAVA的反射机制,包括其作用和Class类的使用。通过Class类,可以获取编译后类的字节码信息,动态操作类对象。反射过程包括利用Class对象创建对应类的对象,访问类的方法、构造器和变量。

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

反射机制

  • 反射机制的作用在于,利用类编译出来的字节码信息,来动态操作类对象。

Class类

  • JAVA之所以能够存在反射机制,是因为实现了Class这个类,这个对象是每一个编译过的类都有的。
    • Class类首先有一个forName(String s)方法,通过传入package.class,也就是对应类的全路径,来获取对应类的Class对象。
    • Class中也有直接的newInstance()方法,故名思意,可以直接创建对应类的对象,但是好像被抛弃了, 不知道什么原因
    • Class可以调用getMehtod(String method)获取特定的类方法
    • Class可以调用getConstructor()获取类构造器
    • Class可以调用getField(String name)获取类中的变量(域)

反射过程

  • 利用Class类来完成对应对象的创建。
package classForName;
import java.lang.reflect.*;
import java.util.*;
class Pet{
	public Pet(){
		System.out.print("Hello ");
	}
	public void print() {
		System.out.print("World");
	}
}
public class ForNameTest {
	private static Class<?> c;
	public static void main(String[] args) throws Exception { 
		try {
			c = (Class<?>)Class.forName("classForName.Pet"); 
			Method m = c.getMethod("print"); 
			Pet name = (Pet) c.getConstructor().newInstance();
			name.print();
		}catch(ClassNotFoundException e) {
			System.out.print(123);
			e.printStackTrace();
		}
		Class clazz = Class.forName("FornameTest");
		ForNameTest fnt = clazz.getConstructor().newInstance();
		System.out.println(fnt.c.toString());
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值