代码之家  ›  专栏  ›  技术社区  ›  user2490003

在Java中为清晰起见对导入的库进行命名空间

  •  0
  • user2490003  · 技术社区  · 6 年前

    是否可以保留Java中导入的方法的命名空间?我想从技术和实践的角度考虑。

    例如,假设我正在导入 spark 图书馆,我可以用它 get() 方法,我可以做一些

    import static spark.Spark.*;
    
    public static void main(String[] args) {
        get(....);
        // do stuff
    }
    

    对于关注这一点的人(特别是当项目更大并且有几个东西被导入时),并不是很明显“get()”是从哪里来的。我很想做这样的事

    import static spark.*;
    
    public static void main(String[] args) {
        Spark.get(....);
        // do stuff
    }
    

    如你所见 获取() 调用现在可视地命名为 Spark .

    谢谢!

    2 回复  |  直到 6 年前
        1
  •  1
  •   Worthless    6 年前

    另外,我想说get对于静态方法来说是一个非常糟糕的名字——如果方法名有更多的含义,那么它们对类名的依赖性就会降低——但是在这里,我们在使用框架时别无选择。

        2
  •  1
  •   Madhu    6 年前

    首先,静态导入的用法是不正确的。按原样,它意味着导入类的所有静态成员 spark 是包裹。等级 Spark static 在上面,您导入了所有的spark包类。你把班级成员称为 ClassName.member ,实例成员为 instanceName.member . 类名本身的冲突是罕见的。所以,这个方案,就其本身而言,是相当可读和优雅的。 Java documentation

    ... So when should you use static import? Very sparingly! Only use it when you'd otherwise be tempted to declare local copies of constants, or to abuse inheritance (the Constant Interface Antipattern). In other words, use it when you require frequent access to static members from one or two classes