免责声明

易百易数码科技

java反射及Method的Invoke方法(java反射method invoke)

简单反射与复杂反射的区别和联系

简单反射和复杂反射都是光线从界面反射回来的现象,其主要区别在于光线在反射时经过的路径是否发生改变。

简单反射指的是光线从一个界面反射回来,光线在反射时经过的路径不发生改变,反射光与入射光的角度相等,反射后的光线与入射光线在同一平面内,反射光线的方向与入射光线的方向相反。

java反射及Method的Invoke方法(java反射method invoke)-图1

复杂反射则是指光线在反射时,经过了多个界面的反射,发生了路径的改变。例如,当光线从一个不透明的表面反射回来时,它可能会经过多个微小的起伏和曲面,导致反射光的方向发生改变。

联系:简单反射和复杂反射都是反射现象,都符合反射定律,都可以用光线追踪等方法进行计算和分析。

区别:简单反射只发生在一个界面上,而复杂反射则涉及到多个界面的反射,导致光线路径的改变。

java反射及Method的Invoke方法(java反射method invoke)-图2

简单反射指先天形成的,不需要大脑皮层中高级中枢参与的反射。复杂反射指后天形成的,需要大脑皮层中高级中枢参与的反射。反射的结构基础是反射弧,反射弧都有着共同的结构模式:感受器→传入神经→神经中枢→传出神经→效应器。反射是在反射弧的基础上建立起来的。

1. 执行速度:简单反射的执行速度更快,因为它直接通过方法调用来执行,而复杂反射需要先获得方法的Method对象,然后再调用invoke来执行,所以速度相对较慢。

2. 安全性:简单反射的方法调用不会做任何安全检查,而复杂反射需要在调用invoke()方法前需要设置访问权限,所以安全性更高。

java反射及Method的Invoke方法(java反射method invoke)-图3

3. 调用方式:简单反射直接通过方法名和参数来调用,而复杂反射需要先获取Method对象,然后通过invoke()方法来调用。

4. 功能:简单反射只能调用 public 方法,而复杂反射可以调用任意访问权限的方法(需要设置访问权限)。复杂反射还可以调用构造方法、获取注解信息等,功能更强大。

总结来说:

在一个类中如何调用另一个类的私有方法

//测试类
class MyTest {

public void publicMethod(Object o) {
System.out.println("调用的公共方法 " + o);
}

/**
* 类的私有方法
*/
private void privateMethod(Object o) {
System.out.println("调用了私有方法 " + o);
}

}

新建main方法

import java.lang.reflect.Method;


public class ReflectionTest {

public static void main(String args[]) throws Exception{

MyTest myTest = new MyTest();

// 调用公共方法
myTest.publicMethod("传入参数");
// 编译报错
// myTest.privateMethod();

// 获得类的私有方法
Method method = MyTest.class.getDeclaredMethod("privateMethod",Object.class);
// 开启私有访问权限
method.setAccessible(true);
method.invoke(myTest,"传入参数");

}
}

只能通过反射才能调用私有方法

到此,以上就是小编对于java反射method invoke的问题就介绍到这了,希望介绍的2点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。

分享:
扫描分享到社交APP
上一篇
下一篇