反射配置文件

本文深入探讨Java反射机制,包括Class对象的使用、字段、构造方法和方法的获取及调用,展示如何通过反射动态创建对象并调用其方法,同时涉及配置文件加载和属性设置。

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

package 反射机制;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;

public class 反射类名 {
public static void main(String[] args)
throws ClassNotFoundException, NoSuchFieldException, SecurityException, IllegalArgumentException,
IllegalAccessException, NoSuchMethodException, InstantiationException, InvocationTargetException, IOException {
Class cls = Class.forName(“反射机制.Person”);
System.out.println(cls);
Person p = new Person();
System.out.println(p.getClass());

	// 成员变量
	Class<Person> p1 = Person.class;

	Field[] f = p1.getFields();
	for (Field field : f) {
		System.out.println(field);
	}
	System.out.println("------------------------------------");
	Field a = p1.getField("name");
	// 获取成员变量a的值
	Object value = a.get(p);
	System.out.println(value);

	a.set(p, "小明");
	System.out.println(p);

	System.out.println("--------------------------------------------");
	Field[] declaredFields = p1.getDeclaredFields();
	for (Field f1 : declaredFields) {
		System.out.println(f1);
	}

	Person p2 = new Person();
	Field d = p1.getDeclaredField("name");
	// 忽略权限修饰符
	d.setAccessible(true);
	Object k = d.get(p2);
	System.out.println(k);

	// 获取构造方法 们
	Constructor cs = p1.getConstructor(String.class, int.class);
	System.out.println(cs);
	// 创建对象
	Object person = cs.newInstance("张三", 14);
	System.out.println(person);
	// 获取空参构造
	Object o = p1.newInstance();
	System.out.println(o);

	// 获取方法
	Method m=p1.getMethod("eat",String.class);
	//执行方法对
	Person p5=new Person();
	m.invoke(p5,"吃细化");
	System.out.println("----------------------------------");
	Method[] method=p1.getDeclaredMethods();
	for(Method m4:method) {
	System.out.println(m4);
	}
	//写一个框架类  配置文件 反射 需要执
	
	**//创建Properties对象
	Properties pro=new Properties();
	//加载配置文件 转换为一个集合
	//获取class目录下的配置文件
	ClassLoader classloader=反射类名.class.getClassLoader();
	InputStream is=classloader.getResourceAsStream("pro.properties");
	pro.load(is);
	
	
	//获取配置文件定义的数据
	String ClassName=pro.getProperty("className");
	String methodName=pro.getProperty("methodName");
	
	//加载这个类进内存
	Class cls1=Class.forName(ClassName);
	//创建对象
	Object obj=cls1.newInstance();
	//获取方法对象
	Method method1=cls1.getDeclaredMethod(methodName,String.class);
	method1.invoke(obj,"2222");**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值