静态导入语句,永远不应该在非静态导入之后

Art*_*ero 6 java import groovy static codenarc

Codenarc是一个框架,可以分析Groovy代码中的缺陷,不良做法,不一致,样式问题等等.

条规则是否有原因:MisorderedStaticImports规则:

检查非静态导入后永远不应该出现的静态导入语句.

违规的例子:

import my.something.*
import static foo.bar.*

public class MyClass{}
Run Code Online (Sandbox Code Playgroud)

我不明白这条规则的动机或含义.

Ste*_*n C 9

正如Marko Topolnik所说,进口的顺序与程序的含义无关.

我试着查看JLS以获得有关该效果的明确声明,但我找不到一个.Java教程也没有提到导入顺序.但是,它的语义import是没有区别的.如果导入导致由于导入顺序导致的任何潜在歧义,则JLS表示这是编译错误.

因此,这只是一种风格惯例.(实际上,如果你看一下规则,它甚至可以让你选择先放置静态导入!)


UPDATE

@Eugene Stepanenkov指出了这个问答

这是Java 8之前的Oracle Java编译器版本中一个模糊的错误.它最终得到了承认和修复.

我想,这意味着该bug 可能是Codenarc警告动机的一部分.但是,这就是问题:如果你使用的是受bug影响的Java编译器,那么带有"错误"顺序的导入的代码根本无法编译......这使得Codenarc警告没有实际意义.