如何解析另一个 class 中的参数?

How to parse args in another class?

我有一个关于解析参数的问题。我有一个在 WriteToFile class 中的写入方法,如下所示:

public class WriteToFile {  

    public void write (String text){
        try{
            FileWriter writer = new FileWriter("output.txt",true);
            BufferedWriter write = new BufferedWriter(writer);

            write.write(text);
            write.newLine();
            write.close();
        }
        catch (Exception error){
            error.printStackTrace();
        }
    }

public class A {

    WriteToFile write = new WriteToFile();
    write.write(something);

}

public class B {

    WriteToFile write = new WriteToFile();
    write.write(something);

}

我们需要将 "output.txt" 更改为 args[1]。通常向方法添加一个参数是解决方案,但只允许更改 3 行代码。我尝试添加一个 set 方法,但是 write 方法被多个 classes 使用,所以需要超过 3 行来修复它。我试图扩展 main class 以进入范围,但没有用。有什么办法吗?

public void write (String text, String filename) // 1
{
   FileWriter writer = new FileWriter(filename,true); // 2
   ...

在你的主程序中,在调用时执行此操作。

new WriteToFile().write(text, args[1]); // 3  

如评论所示,这些恰好是 3 行更改。

添加参数并在调用方法时使用它只需要三个更改:

// Change 1 - add a fileName parameter to the method
public void write (String text, String fileName) { 
    try{
        FileWriter writer = new FileWriter(fileName, true); // Change 2 - use it
        BufferedWriter write = new BufferedWriter(writer);

        write.write(text);
        write.newLine();
        write.close();
    }
    catch (Exception error){
        error.printStackTrace();
    }
}

// Change 3 - in the main method that calls this one, pass args[1]:
myWriter.write("someText", args[1]);

1) 在 WriteToFile class (fileName)

中创建新的 public 字段

2) 来自主要 myWriter.fileName = args[1]

3) FileWriter writer = new FileWriter(fileName, true);

//方法签名调用100次无变化

编辑

如果您在各处构造许多 WriteToFile 实例,则在 Main

中使用静态字段

1) 在 Main public static String fileName;

2) 来自主要 Main.fileName = args[1]

3) FileWriter writer = new FileWriter(Main.fileName, true);