【问题标题】:Guava in Eclipse - Range "cannot be resolved to a type"Eclipse 中的番石榴 - 范围“无法解析为类型”
【发布时间】:2015-02-21 04:10:35
【问题描述】:

我正在尝试在 Eclipse 中为 Range 类实现 Google Guava。据我所知,我已经成功导入了 Guava 库,但是当我尝试实例化一个新范围时,如下所示,我收到错误“范围无法解析为类型。”

import com.google.*;

public class RangeTest {

    Range<Integer> testRange = Range.closed(1, 5);

}

我相信我缺少某种静态导入或方法语法中的某些内容。

我目前正在使用Standford's CS106a curriculum(尽管 Guava 是一个不相关的项目),所以我使用的是 JRE 1.6 和“Standford Eclipse”SDK。我已经尝试使用 Dollar 代替,并且已经能够让它与静态导入一起使用。 Java 和一般编程新手。

【问题讨论】:

  • 通配符不是递归的,com.google.common.collect.* 应该可以工作。
  • 这消除了错误,非常感谢。
  • 如果您使用的是 eclipse,那么您可能不需要使用通配符导入。使用自动补全(CTRL+空格)补全类名,显式导入会自动插入。或者,CTRL+Shift+O 将重新组织您的导入并删除未使用的导入,包括您尚未完成的新导入。使用显式导入的好处是您不必处理具有相同名称的两个类的任何歧义。此外,Map.Entry 等子类无论如何都不会包含在通配符导入中。

标签: java eclipse collections import guava


【解决方案1】:

Javadocs 包含 Guava 提供的软件包的完整列表,com.google 不是软件包。正如 August 所指出的,* 不是递归的——它的意思是“导入所有类在这个包中。由于com.google 中没有类,所以这个语句什么都不做。

这是通配符导入存在问题且通常不鼓励使用的众多原因之一(例如在 Google's style guide 中)。如果你写了import com.google.common.collect.Range;,你就会去参加比赛了。

【讨论】:

    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 2012-04-27
    • 2012-06-04
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多