gpt4 book ai didi

Java:简单命令的实现

转载 作者:行者123 更新时间:2023-12-04 06:53:42 24 4
gpt4 key购买 nike

我为我的常规简单命令创建了一个 pkg。它们是非静态的,更易于扩展,但由于创建对象来使用它们,因此使用起来更耗时。我的其他类(class)使用它们。

$ ls  *.java
CpF.java IsBinary.java RmLn.java Tools.java
F2S.java IsRoot.java SaveToDisk.java WordCount.java
Filters.java ModRelativePaths.java SetWord.java WordNumber.java
Find.java powerTools.java Sort.java

您会选择哪个选项更容易使用它们?
  • 为 pkg 开发一个像“powerTools.java”这样的小接口(interface)。
  • 为它们创建一个带有静态方法的类。
  • 为每个类添加一个静态方法
  • 停止过度使用“创建太多文件”并集中一些?
  • 别的什么?

  • 静态VS对象-讨论
  • 如何让外部方法像在它们自己的类中一样工作,而不用它们的类名引用它们?不是class_name.method(),只是method()。外部方法来自单独的 pkg。

  • 代码无法与我的类(class)和 Pkg 一起使用 Import-static
    $ cat Test.java 
    import static a.*;

    public class Test
    {
    public static void main(String[] args)
    {
    a.printHello();
    }
    }
    $ cat a/Hello.java
    import java.io.*;

    public class Hello
    {
    public static printHello(){System.out.println("Hello");}
    }

    $ javac Test.java
    Test.java:1: cannot find symbol
    symbol: class a
    import static a.*;
    ^
    Test.java:7: cannot find symbol
    symbol : variable a
    location: class Test
    a.printHello();
    ^
    2 errors
    $ sed -i 's@a.printHello@printHello@g' Test.java
    $ javac Test.java
    Test.java:1: cannot find symbol
    symbol: class a
    import static a.*;
    ^
    Test.java:7: cannot find symbol
    symbol : method printHello()
    location: class Test
    printHello();

    最佳答案

    乍一看,我敢打赌它们都没有保持任何状态,因此可以安全地声明 static .我也有这样的印象,每个类实际上只有一个公共(public)方法,它一次只执行一项任务。听起来好像它们与特定平台相关联。

    如果以上所有都属实,那么您有 2 个选择:

  • 只需将它们全部分组到 public final class PowerTools带有 private 的类构造函数(因此它不能被实例化)和public static方法,每个都执行所需的任务。您最终可以使用原始类名作为方法名。
  • 定义一个 public interface PowerTools这样你就可以实现 LinuxPowerTools , WindowsPowerTools , MacPowerTools ,依此类推并创建摘要 PowerToolsFactory根据当前平台自动返回所需的实现(您可以使用系统属性 os.name 来嗅探当前平台)。

  • 如果这是出于纯粹的爱好目的,选项 1 就足够了。但如果你明白我的意思,选项 2 更“专业”。

    更新 :根据您的更新,您可以使用 import static为此声明。另见 Sun Tutorial .

    例如。
    import static java.lang.System.*;

    public class Test {
    public static void main(String... args) {
    out.println("foo");
    exit(-1);
    }
    }

    如果您有 com.example.PowerTools包含 public static 的类方法,然后您可以按如下方式导入它:
    import static com.example.PowerTools.*;

    public class Test {
    public static void main(String... args) {
    if (isBinary(file)) {
    // ...
    }
    saveToDisk(file);
    }
    }

    关于Java:简单命令的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2768914/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com