我假设当 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/