问题标签 [method-signature]

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 回答
2081 浏览

java - 什么是“覆盖等效”,它与@Override 有什么关系?

阅读注释的Javadoc@Override我遇到了以下规则:

如果使用此注解类型对方法进行注解,则编译器需要生成错误消息,除非至少满足以下条件之一:

  • 该方法确实覆盖或实现了在超类型中声明的方法。
  • 该方法的签名与 Object 中声明的任何公共方法的签名等效。

第一点我很清楚,但我不确定第二点。

“覆盖等效”是什么意思?公共方法Object在这方面的特殊性如何?为什么这不包括在第一个标准中?

此外,这仅适用于 Java 7+ 文档。Java 6 文档没有说任何关于覆盖等效的内容。为什么改变?


更新:

在进一步查阅 JLS(第 8.4.2 节)后,我发现了以下关于覆盖等效的解释:

m1如果满足以下任一条件,方法的签名是方法签名的子签名m2

  • m2具有与 相同的签名m1,或
  • 的签名与 的签名m1的擦除(§4.6)相同m2

两个方法签名m1并且m2覆盖等效的当且仅当m1是 的子签名m2m2的子签名m1

据我所知,这回答了第一个问题(“这是什么意思?”)和第三个问题(“为什么第一个条件不涵盖这个?”)。

如果我理解正确(如果我没有正确理解,请通知我!),只有一种情况是两种方法是等效的,并且属于原始问题的第一个条件。当子类方法的签名的擦除与超类方法的签名相同时就是这种情况,但反之则不然。

那么,原始问题的第二个条件只会在我们尝试“覆盖”Object类的公共方法时尝试添加类型参数时发挥作用。我尝试了以下简单示例来测试它,使用未使用的类型参数:

当然,这个类不会编译,因为该方法实际上并没有覆盖该equals方法,因此会与它发生冲突。但我仍然收到使用@Override注释的编译器错误。假设这个例子符合第二个使用条件,我错了@Override吗?或者编译器是否会产生此错误,尽管不需要这样做

0 投票
2 回答
1344 浏览

clojure - Clojure:不同类类型上的 defmulti

快速clojure问题,我认为这主要与语法有关。如何根据参数的特定类型签名调度多方法,例如:

我想将此扩展到任意内容,例如两个字符串后跟一个映射,映射后跟一个双精度数,两个双精度数后跟一个 IFn 等...

0 投票
3 回答
4574 浏览

java - Java 方法签名抛出异常,实现没有

我正在研究一种方法抛出的一些异常。该方法如下所示:

我的问题是,在实现根本没有 throw 语句的情况下,是否可以让这个方法抛出“someCheckedException”。

在没有实现抛出异常的语句的情况下将抛出异常放在签名中是错误的吗?

0 投票
3 回答
3217 浏览

digital-signature - 存储在服务器上的文档的数字签名

我想ERP通过存储在服务器上的网络浏览器文档在我们的数字签名上实施一个流程。该过程应该是:

  1. 用户登录
  2. 用户查看存储在服务器上应进行数字签名的 pdf 文件
  3. 用户选择pdf文件进行数字签名
  4. 文件将进行数字签名

数字标牌可以使用智能卡或服务器端标牌系统来完成。知道如何实施吗?

0 投票
0 回答
107 浏览

f# - 为什么 Seq 和 List 对于 nth 有不同的签名?

我注意到 of 的签名nthSeq索引List( int) 的位置不同。

在尝试以下操作后,我才注意到它:

我知道最初无法确定其中的项目数量,Seq因为它的计算方式与 的不同List,我只是不知道它们的差异将如何影响 . 的签名List.nth

0 投票
3 回答
1153 浏览

c# - 与具有相同名称和不同返回类型的成员的接口

为什么我不能执行以下操作?

的signarureReceive()不同,但参数相同。为什么编译器只看参数而不看成员签名?

ICommunication' 已经定义了一个具有相同参数类型的名为 'Receive' 的成员。

我怎么能解决这个问题?

我可以重命名Receive()如下,但我更愿意将其命名为Receive().

0 投票
1 回答
434 浏览

performance - Perl - OOP/Moose - 方法签名

我喜欢像这样在 Perl 中编写 OO 代码:

不幸的是,这很慢,我找不到任何与其等效的鼠标或 Moo。可惜 Perl 没有 PyPy 之类的东西。

有人知道如何使用较轻的实现来归档相同的内容吗?

0 投票
2 回答
139 浏览

objective-c - (int *) 和 (int []) 之间签名函数的区别?

我在指针和如何正确声明函数中数组的传递方面有点挣扎。

有人可以解释一下这之间的区别:

和这个 :

非常感谢。

0 投票
2 回答
101 浏览

c++ - 使用虚拟继承的 C++ 重载方法绑定

好的,我有一个与以下代码的输出有关的问题(即 111222223)

所以我知道我正在使用带有引用的点运算符,该引用将根据调用者的运行时类型动态绑定正确的虚拟方法(需要 -> 带有指针,但在这里动态思维可以)。我不明白为什么倒数第二个 cout 行打印'2'而不是'3'。这是因为方法签名是静态的,所以方法是根据正确派生类型 SC 中的静态签名选择的?我在这里先向您的帮助表示感谢!

0 投票
1 回答
1639 浏览

objective-c - 为什么这个 NSInvocation 会引发异常?

我现在真的很头疼。所以,一个NSTimer物体,一个NSMethodSignature物体,一个NSInvocation物体走进酒吧。这是笑话的其余部分:

这是我在调试控制台中得到的:

编辑:我不确定为什么有人认为有必要对我的问题投反对票。很抱歉尝试学习新东西。实际上,这是对我最初的问题的修正:我应该做些什么不同的事情?一旦我弄清楚我的问题是什么,我应该删除帖子吗?我试图遵循 Stack Overflow 的所有礼仪,我什至花时间留下一个答案,以免它可以帮助别人。下次,我是否应该回到我的问题并留下诸如“nvm ......想通了。thx”之类的回答?还是我应该把它留在这里,无人回答?我肯定知道我已经厌倦了点击链接却被引导到未答复的帖子。