问题标签 [method-invocation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
36 浏览

javascript - 这里遵循哪种 JavaScript 方法调用模式?

在维护网站时,我发现页面中包含的所有 javascript 文件都遵循这种编码模式,这看起来像是工厂模式和其他一些模式的混合:

虽然很容易理解流程,但困扰我的是这里遵循的模式是什么?作者试图通过这种编码风格实现/获得什么[与遵循其他更流行的模式来实现相同的功能相比?]

0 投票
1 回答
77 浏览

java - 在 Java 反射中处理返回的对象

我有一个Java反射:

Oracle SQL 类ArrayDescriptorcreateDescriptor(String, Connection)我用来在我的代码中创建数组描述符对象的方法。

此方法返回ArrayDescriptor对象。因为,所有这些都发生在运行时。我不知道如何处理类型的返回值ArrayDescriptor(与我在运行时加载的相同)。

一种可能性可能是:我可以将它收集为 Object 类型。但是,当我需要使用这个对象时,如何对这个对象执行强制转换?

我不知道,如果上述是一种理想的方式来做到这一点。如果有的话,请建议一种优雅的方式来做到这一点。

提前致谢。

0 投票
3 回答
8129 浏览

java - 我可以检查是否返回了 void 方法吗?

我只是想问一下,是否可以通过调用来检查 void 方法是否“取消”了自身return;

例如在我的 main I callcalculate(myArray);中,它的定义如下:

他们是一种知道它是否返回的方法吗?我的想法是制作一个“全局”布尔值,在我们返回之前将其更改为 true,然后在 main 中检查它的值,或者只是将返回类型更改为 int 之类的东西,当它在我们使用的开头return -1;和结尾返回时方法return 0;

两者都是可能的,但我认为它们都不是很好的风格。有替代方案吗?

0 投票
1 回答
194 浏览

multithreading - 将任意数据存储到对象实例中

考虑以下示例:

我希望挂钩的虚拟方法在线程中执行自身,即延迟/延迟其执行。

为此,我使用 TVirtualMethodInterceptor 来拦截给定类的虚拟方法。当调用虚拟方法时,会触发 vmi.OnBefore。这是我的想法的简化表示:

Call_VirtualMethod(method1) -> OnBefore_fires_1 -> CreateThread_and_InvokeAgain -> OnBefore_fires_2 -> DoInvoke := true (即直接执行方法)

解释:

  1. 最初 SomeFlag 的值为 PostponeExecution。

  2. 第一次调用 ttc.method1 将触发 OnBefore 事件 (OnBefore_fires_1)。该方法不会执行,因为 SomeFlag 是 PostponeExecution。因此将创建一个线程,它将 SomeFlag 设置为 DirectExecute 并再次调用相同的方法,但在线程的上下文中。

  3. 然后 OnBefore 再次触发(因为 Instance 是代理对象,即方法是挂钩方法)。这次 SomeFlag 是 DirectExecute 并且将调用该方法。

我在调用方法时使用代理对象(Instance var),因为我希望“Self”指向它。这样如果method1调用了同一个类的其他虚方法,后面的虚方法也会自动在一个线程中执行。

为此,我需要将标志存储在某处,即指示 OnBefore 的第二次调用要做什么。我的问题是如何/在哪里存储“SomeFlag”,以便在两次调用 OnBefore 期间可以访问它?解决方案应该是跨平台的。也欢迎提出建议/其他解决方案。

我想它可以通过 VMT 修补(link1link2link3)来完成,但 VirtualProtect 是一个仅限 Windows 的功能,因此会违反跨平台要求。

任何想法都受到高度赞赏。

这是怎么回事:

想象一下,你可以在 Delphi 中有这样的类:

这种方法确实简化了线程和同步。不再需要打类型 TThread.Synchronize()、TThread.Queue() 等。您只需关注业务逻辑并调用适当的方法 - OnBefore 事件会为您完成“脏”工作。非常接近 C# 中的 Await 方法。

这是主要思想!

更新: 我重新编辑了整个问题以使其更清楚。

0 投票
1 回答
49 浏览

c# - 实现有效的方法调用顺序可能性

我有几种方法可以进行一些操作。让我们将这些方法称为 x,y,z,w。

假设用户以某种方式让我知道方法的调用顺序。例如,他可以选择跟注:x(); z(); w(); y();或其他一些可能性。

问题是,考虑到每种组合都是可能的,我怎样才能有效地实现这样的东西?我想知道实现方式,以及如何让用户选择订单。(也许是一个Enum例子?但他们将枚举具有 xyzw、xzyw 等的值,这将有很多可能性?)

0 投票
0 回答
150 浏览

java - spring 是否可以同时创建两个 bean?

我遇到了一个问题,spring 尝试通过反射调用 bean 的 getter,然后它抛出非法状态异常,说 bean 是“当前正在创建中”。spring 不应该知道除非实例化它不能调用 bean 的方法吗?在这种情况下,所有依赖注入都是由 Spring 完成的。是否有可能两个 bean 共享 ClassABC 并且如果它们同时被创建,它们可能会抛出这个异常?

日志跟踪:

0 投票
1 回答
117 浏览

java - 为什么递归调用此函数不会抛出 NullPointerException

我的问题来自这个线程

考虑这段代码:

上面的输出是 8。

我不明白的是如何fibLamdba初始化?似乎我完全想念方法调用是如何完成的,因为我认为这段代码会产生 NPE。

希望我的问题很清楚

0 投票
0 回答
609 浏览

scala - scala中的方法调用拦截

嗨,我想知道是否有一种方法可以反射(或以其他方式)拦截发送到类的所有方法调用。我知道使用 Dynamic 可以拦截未知方法,但是类中已经定义的方法呢​​?

我想找到一种方法来做到这一点,而不必修改方法的语法(因为它是为了拦截方面框架中的方法)。

作为我想做的一个例子,想象一下:

}

0 投票
1 回答
387 浏览

javascript - 在 module.exports 上调用函数时出现 CommonJS 非法调用错误

这样做很好:

但是,将其移动到另一个文件并使用 CommonJS/webpack 将其导出会导致:

(像这样:)

...

这可能非常明显,但在我看来,我不明白为什么这不起作用:/

0 投票
4 回答
1334 浏览

android - 在 android studio 上验证两个日期

我需要验证 2 个日期,一个由用户选择,另一个是我从日历中获得的那个……这是我迄今为止尝试的但没有成功:

错误出现在 .before(dfDate.format(date2)) 上,它说: Error:(484, 51) error: method before in class Date cannot be applied to given types; 必需:找到的日期:字符串原因:实际参数字符串无法通过方法调用转换转换为日期

如果你能看到,如果我比较两个日期是否相等并且编译器在这一行没有显示任何错误:

我也尝试将其更改为 Date 但没有成功......有什么想法可以帮助我解决这个问题吗?谢谢。