java中反射的用法

package test;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class ReflectionTest {
	public static void main(String[] args) throws Exception {
		String string = "hello";
		Class name = Class.forName("java.lang.String");
		Class[] parameterTypes = { String.class };// 构造方法中的参数列表
		Constructor constructor = name.getConstructor(parameterTypes);// 调用构造方法
//		Class[] methodTypes = { Integer.class };// charAt方法中的参数列表 这个地方用Integer.class 会出现“java.lang.NoSuchMethodException: java.lang.String.charAt(java.lang.Integer)”异常
		Class[] methodTypes = { int.class };// charAt方法中的参数列表 这个地方得用int.class,因为参数是int类型的。不明白为什么不可以用Integer.class?
		Method method = name.getDeclaredMethod("charAt", methodTypes);//调用String的charAt(int index)方法
		Object newInstance = constructor.newInstance("hello world");//实例化一个对象,用到了有参数的构造方法
		char c = (Character) method.invoke(newInstance, 3);//相当于 char c = newInstance.charAt(3)
		System.out.println("char:" + c);
	}
}

以上是自己写的一个小例子,不知道理解的对不对,多多指教!(为什么研究这个?学IT的女朋友要毕业了,你懂得)

还有为什么要用反射,希望大家能用自己的话说一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java,可以使用反射机制来调用方法。通过反射,可以在运行时获取类的信息,并动态地调用类的方法。 要调用某个方法,首先需要获取对应的Method对象。可以使用Class类的getMethod()方法或getDeclaredMethod()方法来获取Method对象。getMethod()方法只能获取公共方法,而getDeclaredMethod()方法可以获取所有方法,包括私有方法。获取Method对象后,就可以使用invoke()方法来调用方法。 下面是一个示例代码,演示了如何使用反射调用方法: ```java import java.lang.reflect.Method; public class ReflectExample { public static void main(String[] args) throws Exception { // 获取Class对象 Class<?> clazz = MyClass.class; // 获取方法名和参数类型 String methodName = "myMethod"; Class<?>[] parameterTypes = {int.class, String.class}; // 获取Method对象 Method method = clazz.getDeclaredMethod(methodName, parameterTypes); method.setAccessible(true); // 如果方法是私有的,需要设置可访问 // 创建对象实例 Object obj = clazz.newInstance(); // 调用方法 Object result = method.invoke(obj, 123, "hello"); // 输出结果 System.out.println(result); } } class MyClass { private String myMethod(int num, String str) { return str + num; } } ``` 以上代码,首先通过Class.forName()方法获取MyClass类的Class对象。然后,使用getDeclaredMethod()方法获取方法名为"myMethod",参数类型为int和String的Method对象。接着,使用newInstance()方法创建MyClass类的实例。最后,调用invoke()方法来调用方法,并获取返回值。 我希望我的回答对你有帮助。如果你还有其他
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值