当前位置:  开发笔记 > 编程语言 > 正文

"静态反射"在java中如何工作?(例如在mockito或easymock中)

如何解决《"静态反射"在java中如何工作?(例如在mockito或easymock中)》经验,为你挑选了1个好方法。

我是一个.NET人 - 我主要使用C#编写代码.

从C#3.0开始,我们可以利用lambda表达式和表达式树来使用静态反射.例如,可以GetMethodName在以下代码段中实现返回参数中传递的方法的名称:

string methodName = GetMethodName( o => o.DoSomething());
Console.WriteLine(methodName); // displays "DoSomething"

现在,当我在Java世界中查看Mockito样本(或EasyMock样本)时,我看到:

LinkedList mockedList = mock(LinkedList.class);
when(mockedList.get(0)).thenReturn("first");

它是如何工作的?

when方法如何工作?它mockedList.get(0)是如何解释为对get方法的调用,0作为参数而不是作为值传递



1> Jon Skeet..:

模拟库通常不使用表达式树.它们构建了一个实现适当接口的类型,并通过记录它们或验证它们并返回预编程的响应来响应方法调用.这通常使用代理(例如,.NET中的RealProxy,Java中的代理)或动态代码生成来完成.

在EasyMock的情况下,它使用Proxy(对于接口,无论如何),正如您在源代码中看到的那样:看看org.easymock.internal.JavaProxyFactory.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有