1 回答

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個贊
試圖將自定義打印方法直接綁定到File對象違反了單一職責(zé)原則??赡苡卸喾N有效的方法來打印列表的內(nèi)容。將每個打印方法直接添加到類中會很快使類膨脹,也會使類的用戶感到困惑。
最實(shí)用的方法是創(chuàng)建一個單獨(dú)的對象或?qū)嵱梅椒▉韴?zhí)行這項(xiàng)工作。
public class FileNamePrinter {
public String print(List<File> files) {
StringJoiner joiner = new StringJoiner("," "[", "]");
for (File file : files) {
joiner.add(file.getName());
}
return joiner.toString();
}
}
在您的常規(guī)邏輯中,您現(xiàn)在可以使用此FilePrinter對象來執(zhí)行翻譯。
List<File> files = ...;
FileNamePrinter printer = new FileNamePrinter();
System.out.println(printer.print(files));
另一種選擇是根據(jù)該getName方法將文件列表轉(zhuǎn)換為字符串列表,然后打印該列表
System.out.println(files.stream()
.map(File::getName)
.collect(Collectors.toList()));
添加回答
舉報