请参阅以下从Eclipse Java IDE中截取的屏幕截图:
为什么Eclipse没有建议从paw://current.document/open?text=curl%20-X%20%22GET%22%20%22https:%2F%2Fecho.paw.cloud%2F%22%20%5C%09-H%20%22Cookie:%20sessionid%3Dvr3qftico4qeri1l21mayf40axdyidlt%22&importer=com.luckymarmot.PawExtensions.cURLImporter
导入BigInteger
?仅在导入java.math.BigInteger
后才会显示BigInteger
的导入建议。
有人可以解释这背后的原因吗?
更新:
为了检查以下答案是否是原因,我尝试了这个。我创建了一个自定义java.util.List
并检查了以下代码的建议。屏幕截图如下所示:
显然,class Test<T extends MyClass>
不是导入的有效候选者。 Eclipse仍然建议它。这证实了在早期的情况下,Eclipse没有保留java.math.BigInteger
的导入建议来过滤导入的有效类。
答案 0 :(得分:3)
我认为这背后的主要原因是Eclipse不知道List
的类签名(缺少更好的单词)是什么。由于您尚未导入java.util.List
,因此List
可能是任何内容。例如,您可以在另一个包中声明自己的List
类,声明为:
public class List<T extends Double> { ... }
或类似的东西。
在这种情况下,我不认为Eclipse想知道哪个类是有效的类型参数,直到它知道你要导入哪个List
。
解决您的更新:
如果您的更新似乎证明了用户Susannah Potts在their comment中所说的内容:
这听起来像是Eclipse使用的解析器的一个方面。它看到
List
不存在,因此它首先标记它并且不检查类型,因为您无法创建要将类型归属的对象。
你还说:
显然,
java.math.BigInteger
不是导入的有效候选者。 Eclipse仍然建议它。这证实了在早期的情况下,Eclipse没有保留BigInteger
的导入建议来过滤导入的有效类。
您的更新并未完全确认您的建议。当有效类不存在时,Eclipse可以设计为列出与给定名称匹配的所有类。例如,唯一的BigInteger
类是java.math.BigInteger
,也许如果你有自己的自定义BigInteger extends MyClass
,在构建路径的另一个包中,那么Eclipse只会建议BigInteger
类,或在java.math.BigInteger
之前提出建议。
真实答案:
基本上任何事情都可能发生,甚至可能有Eclipse看到的大多数使用过的类的缓存。还有多个版本的Eclipse,每个版本都可能表现出不同的行为。获得有效答案的唯一方法是,如果您联系正在使用的Eclipse版本的创建者并询问他们。