【问题标题】:what is Imports Order in java class and how to resolve it什么是 java 类中的 Imports Order 以及如何解决它
【发布时间】:2012-08-16 09:51:01
【问题描述】:

在我的 java 类中有多个导入,如下所示。

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

我的问题是声纳报告在进口订单类别下显示轻微违规。

“java.util.ArrayList”导入顺序错误。

这究竟意味着什么以及如何解决这种声纳违规问题。

提前致谢。

【问题讨论】:

  • 不是所有的还有更多的进口,但剩下的都是定制类。
  • 可能是 ArrayList 应该在您的自定义类之前或之后。取决于包名,我猜。
  • 尝试将ArrayList移到List之后,因为它实现了接口List。它可能会起作用,尽管这个警告对我来说毫无意义。

标签: java sonarqube


【解决方案1】:

单独使用import java.util.ArrayList 并没有什么问题——它只是碰巧是第一个违反规则的。您的问题的完整答案将需要显示您的所有导入。最可能的原因是导入组排序。

【讨论】:

  • 更多的是评论而不是答案,但在这一点上,如果没有 OP 提供更多反馈,那是最好的。 +1
【解决方案2】:

根据我的经验,一个包中的类必须按字母顺序排序。因此,查看位于 ArrayList 之前的类并参考 java.util 包(如果有的话)。就我而言,它是这样的:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

【讨论】:

  • 这很完美。我们必须按照字母顺序
【解决方案3】:

我知道我在这里聚会迟到了,但这可以帮助其他人。

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

上面没有违反规则,因为它按字母顺序排序,你得到“'java.util.'的错误顺序。进口。”当这些导入中的任何一个位于其他导入之间而没有正确的排序顺序时。例如:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

由于导入没有很好地排序,上述规则违反了规则。要解决这个问题,只需将“java.util”导入移到“org.slf4j”导入上方。有点像:

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

此外,除了字母排序之外,导入的排列方式似乎也有一个顺序。

  1. 静态导入
  2. 从同一项目中的其他包导入
  3. 从 java 导入
  4. 从框架导入
  5. 所有其他进口

【讨论】:

    【解决方案4】:

    如果您使用的是 eclipse,请尝试 Ctrl+Shift+O 修复导入。

    另请参阅this question

    【讨论】:

    • 我已经完成了,但导入顺序仍然没有变化
    【解决方案5】:

    import 语句的顺序与编译器或 JVM 无关。这只是一种编码风格偏好。就个人而言,如果我对特定包使用超过 3 个类,我喜欢使用 import some.package.*

    【讨论】:

      【解决方案6】:

      将 ArrayList 导入放在 List 导入之后。

      【讨论】:

      • 为什么?这里的政策是什么?
      • 违规可能来自这条规则:checkstyle.sourceforge.net/config_imports.html 不明白为什么它抱怨 ArrayList 导入
      • 这个回复是错误的,其他帖子解释了这个项目被突出显示的真正原因。移动 ArrayList 导入可能会违反“有序”规则。
      猜你喜欢
      • 2010-11-22
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多