Eclipse报告数组的clone()方法是从它的相应类型(包括原语)?

Cod*_*der 8 java eclipse arrays clone

在此输入图像描述

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

 <methodName>(<any parameters>) : <retunType> - <actual class the method will be invoked from>
Run Code Online (Sandbox Code Playgroud)

并且对于所有方法(但是克隆())似乎也是如此.

但是,对于clone(),eclipse说该方法来自数组的类型(byte在这种情况下).

它是所有相同的基本类型数组引用类型的数组为好.

例如:因为String[]它给了clone() : String[] - String

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

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

wer*_*ero 3

这个只能通过查看eclipse源码来回答。

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

细节:

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

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

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

现在,CompletionProposalLabelProvider获取这些提案对象并以StyledString. 方法#createLabelWithTypeAndDeclaration针对领域提案执行此操作,方法#createMethodProposalLabel针对方法提案执行。它们对于声明类型的显示有不同的实现。

方法 display 调用SignatureUtil.stripSignatureToFQN,传递“[B”作为签名。返回的结果已去除所有数组信息,只是“字节”。

字段显示调用Signature.getSignatureSimpleName传递“[B”。该方法不会忽略数组信息并返回“byte[]”。