第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

重寫 File 類 toString 而無需在重寫類類型中創(chuàng)建對象

重寫 File 類 toString 而無需在重寫類類型中創(chuàng)建對象

寶慕林4294392 2022-06-23 20:46:33
我有一個ArrayList要打印到控制臺的文件。我toString()對類的方法很好,ArrayList但我不想打印File對象的路徑名,我不想像調(diào)用getName()方法時那樣打印它們的名稱.我想像這樣簡單地做到這一點(diǎn):class overridingClass extends File {    @Override    public String toString() {        return Super.getName();    }}有沒有辦法以某種方式覆蓋 FiletoString()方法而不必將我的File對象更改為overridingClass對象PS:我已經(jīng)為此搜索了幾個小時,甚至找不到關(guān)于覆蓋內(nèi)置類方法的任何內(nèi)容,所以如果有人可以在找不到任何相關(guān)內(nèi)容的情況下進(jìn)行問答,那就太好了,而且可能在這里放一個鏈接
查看完整描述

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()));


查看完整回答
反對 回復(fù) 2022-06-23
  • 1 回答
  • 0 關(guān)注
  • 255 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號