问题标签 [method-dispatch]

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 投票
2 回答
2603 浏览

java - 在没有双重调度/访问者模式的情况下解决 Java 的静态方法调度

我正在使用一个Foo提供这些方法的类:

由于 Java 在 non-receiver 参数上静态分派,我不能只传递 my value(这是一个Object,但可能具有动态类型Goo)并依赖 JVM 动态选择“正确”方法。

这是我目前(丑陋)的解决方法:

有没有更好的方法可以在不修改Foo(包含重载方法的类)中的代码的情况下做到这一点?

0 投票
4 回答
5993 浏览

java - 带有 null 参数的 Java 方法分派

为什么(显然)我null是直接作为参数传递,还是传递Object我分配的 null

换句话说,为什么(注释掉的)第二个调用foo(...)未发送到foo(Object)

更新:我使用 Java 1.6。我可以毫无问题地编译 Hemal 的代码,但我的仍然无法编译。我看到的唯一区别是 Hemal 的方法是静态的,而我的不是。但我真的不明白为什么这会有所作为......?

更新 2:已解决。我的班级中有另一个方法 foo(Runnable),因此调度程序无法明确选择单个最具体的方法。(请参阅我在 Hemal 的第二个答案中的评论。)感谢大家的帮助。

0 投票
3 回答
1730 浏览

java - Java 动态绑定

我正在练习考试,发现了一个让我完全迷失的示例问题。对于以下代码,找到输出是什么:

我有我的想法,但是当我运行 java 时,我得到了完全不同的东西:

前几个还可以,后来真的看不懂了。有人对这个问题有很好的解释吗?

谢谢

0 投票
4 回答
1673 浏览

ruby - Ruby: How do I invoke a function via an object reference?

Consider this contrived example:

Now I'd like to invoke the target of eating_method with some arguments:

What's the right way to do this in Ruby?

0 投票
1 回答
7946 浏览

apache-flex - 数据网格中的 Itemclick 事件

问题可以概括为当单击数据网格中的项目时,文本区域显示项目的值,但这里的组件是分开的,因此需要调度事件。

///////////////////////////////////////// /////////////

这是我的主要 MXML 应用程序文件:

0 投票
5 回答
64831 浏览

objective-c - 使用 -performSelector:与仅调用方法

我对 Objective-C 还是有点陌生​​,我想知道以下两个语句之间有什么区别?

0 投票
5 回答
22748 浏览

java - 重载是编译时多态性。真的吗?

我确实知道覆盖和重载之间的语法差异。而且我也知道覆盖是运行时多态性,而重载是编译时多态性。但我的问题是:“重载真的是编译时多态性吗?方法调用真的在编译时解决吗?”。为了澄清我的观点,让我们考虑一个示例类。

由于所有方法greetMe(), greetMe(String name), wishLuck()都是公共的,它们都可以被覆盖(包括重载的),对吧?例如,

现在,考虑以下代码段:

getRandomGreeter()方法返回一个随机Greeter对象。它可以返回 的对象Greeter或其任何子类,如FancyGreeterGraphicalGreeter或任何其他子类。将getRandomGreeter()使用new或动态加载类文件创建对象,并使用反射(我认为反射是可能的)或任何其他可能的方式创建对象。所有这些方法Greeter可能会或可能不会在子类中被覆盖。所以编译器无法知道某个特定的方法(重载与否)是否被覆盖。对?此外,维基百科在Virtual functions上说:

在 Java 中,所有非静态方法默认都是“虚拟函数”。只有用关键字 final 标记的不能被覆盖的方法,以及不能被继承的私有方法是非虚拟的。

由于虚函数是在运行时使用动态方法分派解决的,并且由于所有非私有、非最终方法都是虚拟的(无论是否重载),它们必须在运行时解决。对?

那么,如何在编译时解决重载问题?或者,有什么我误解了,或者我错过了什么?

0 投票
4 回答
44266 浏览

python - 我应该什么时候使用@classmethod,什么时候使用def method(self)?

在集成我以前没有使用过的 Django 应用程序时,我发现了两种不同的方法来定义类中的函数。作者似乎既独特又有意地使用它们。第一个是我自己经常使用的:

另一个是我从不使用的,主要是因为我不明白何时以及将其用于什么用途:

python文档中的classmethod装饰器说:

类方法接收类作为隐式第一个参数,就像实例方法接收实例一样。

所以我猜cls是指Dummy它自己(class不是实例)。我不完全理解为什么会这样,因为我总是可以这样做:

这只是为了清楚起见,还是我错过了最重要的部分:没有它就无法完成的怪异和迷人的事情?

0 投票
2 回答
299 浏览

wcf - 查找 WCF 将向哪个方法分派 RESTful 请求

假设我使用以下合同实现了 WCF REST服务。

现在,我在管道中有一个 HttpModule 来进行授权,但是该代码需要知道请求将被分派到哪个方法。如何找到将由 WCF 调用的方法的签名?

0 投票
0 回答
123 浏览

ruby - 调用 super 时 Ruby 如何调度方法?

我正在研究如何在一些面向对象的语言中为爱好项目调用方法的内部结构。我发现关于正常调度的信息相当容易获得,但是调用类方法的“超方法”有点难以理解。

通过反汇编Objective-C,我发现clang 会插入对特定类的引用,因此通常调用的超类[super message]在典型方法实现的编译时是固定的。(Objective-C 的 msgSendSuper 行为是什么?

我希望了解 Ruby 机制是什么,但没有找到任何搜索结果。我看了一眼源,但找不到我要找的东西。super有人可以解释标准 ruby​​-lang.org 实现中调用的 Ruby 方法调度的内部结构吗?