java - Eclipse 报告数组 clone() 方法来自其相应的类型(包括原语)?

标签 java arrays eclipse clone

enter image description here

我假设当 eclipse 建议方法时,它的形式是

 <methodName>(<any parameters>) : <retunType> - <actual class the method will be invoked from>

而且张贴的图片中的所有方法(但 clone() 除外)似乎也是如此。

但是对于 clone(),eclipse 表示该方法来自数组的类型(在本例中为 byte)。

对于所有基本类型数组引用类型数组都是一样的。

例如:对于 String[] 它给出 clone() : String[] - String

这是什么意思?我的理解错了吗?还是 clone() 方法中有其他东西?

为了说清楚,我的问题是为什么 Eclipse 说“clone()”来自 byte 而它应该来自 byte[],就像“length”一样

最佳答案

这个只能看eclipse源码才能回答。

您的问题的答案很简单但令人失望:生成完整提案的 Eclipse UI 代码构建了错误的显示。请注意,对数组长度属性的完整建​​议显示了正确的类型(在您的示例中为 byte[])。

详情:

当您触发完成助手时,可能的完成计算为 CompletionProposals .

用于显示建议方法或字段完成类型的 CompletionProposals 的属性是 declaringTypeSignature(见下文)。

CompletionTests显示克隆方法的提案对象和字节数组的长度字段将具有 declaringTypeSignature“[B”。

现在CompletionProposalLabelProvider获取这些提案对象并以 StyledString 的形式构建 View 。方法 #createLabelWithTypeAndDeclaration 为字段提案执行此操作,方法 #createMethodProposalLabel 为方法提案执行此操作。它们对声明类型的显示有不同的实现。

方法显示调用SignatureUtil.stripSignatureToFQN ,传递“[B”作为签名。返回的结果去掉了所有的数组信息,只是“byte”。

字段显示调用Signature.getSignatureSimpleName通过“[B”。该方法不忽略数组信息,返回"byte[]"。

关于java - Eclipse 报告数组 clone() 方法来自其相应的类型(包括原语)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31469457/

相关文章:

java - xpath 和 java 如果没有 id 匹配

javascript - 使用 PHP 使用 CSV 内容填充 jQuery 数组

c++ - 如何写一个不同大小的6维数组?

javascript - 如何选择数组中除第 i 个元素之外的所有其他值?

java - 使用 Eclipse 编写 Java GUI

java - 如何在 Eclipse 中运行单个 JUnit 测试方法?

java - 定期增量读取文本文件作为字节数组忽略部分附加行

java - 隐藏状态栏中的通知效果。安卓编程

java - 在另一个模态 JFace 对话框之上打开模态 JFace 对话框

java - org.h2.jdbc.JdbcSQL异常 : Schema "MYAPP" not found; SQL statement