我有一个关于解析args的问题。我有一个写WriteToFile
类的写方法,如下所示:
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方法但是写了多个类使用的方法,所以修复它需要3行以上。我试图扩展主类进入范围,没有工作。有没有办法做到这一点?
答案 0 :(得分:4)
添加参数并在调用方法时使用它只需要进行三处更改:
// 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 :(得分:1)
public void write (String text, String filename) // 1
{
FileWriter writer = new FileWriter(filename,true); // 2
...
在你的主要部分,在打电话时这样做。
new WriteToFile().write(text, args[1]); // 3
这些正是3行更改,如注释所示。
答案 2 :(得分:1)
1)在WriteToFile
类(fileName)
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);