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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Java:替代聲明空構(gòu)造函數(shù)以從另一個(gè)類初始化對(duì)象

Java:替代聲明空構(gòu)造函數(shù)以從另一個(gè)類初始化對(duì)象

qq_花開花謝_0 2022-07-06 17:08:11
我正在創(chuàng)建一個(gè)簡(jiǎn)單的基于文本的交互式應(yīng)用程序,提示用戶輸入。每個(gè)輸入對(duì)應(yīng)一個(gè)特定的命令,該命令調(diào)用特定的方法。因?yàn)橛泻芏喾椒?,所以我選擇在不同的類之間分配它們。所以應(yīng)用程序是這樣工作的:主類負(fù)責(zé)讀取用戶輸入(使用 Scanner 對(duì)象)。然后,用戶輸入作為參數(shù)傳遞給 B 類中的方法 B,該方法決定輸入對(duì)應(yīng)于哪個(gè)命令。確定后,該方法調(diào)用正確的方法,該方法可以在任何其他類中(本例中為類 C 中的方法 C)這意味著我必須初始化對(duì)象實(shí)例以避免空指針異常。我必須從中初始化對(duì)象的類之一只有一個(gè)帶參數(shù)的構(gòu)造函數(shù),但在這種情況下我實(shí)際上不想用值初始化對(duì)象,而只是將其用作對(duì)象的引用指針,所以我可以調(diào)用該類的方法?,F(xiàn)在我正在使用一個(gè)空構(gòu)造函數(shù)來解決這個(gè)問題,但是有沒有比聲明一個(gè)空構(gòu)造函數(shù)更好的替代解決方案?我編寫了我認(rèn)為可以證明我的問題的代碼:public class MainClass {    ClassB classB = new ClassB();    public void methodA {        classB.methodB(userInput);    }}public class ClassB {    ClassC classC = new ClassC();    public void methodB {        classC.methodC();    }}public class ClassC {    String name;    int age;    public ClassC(String name, int age) {        this.name = name;        this.age = age;    }    public ClassC() {    }    public void methodC() {        // Do something    }}
查看完整描述

2 回答

?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

真正的答案是:不要那樣做。你看,如果那個(gè) ClassC 是關(guān)于存儲(chǔ)玩家的詳細(xì)信息......首先調(diào)用它Player(即使在舉例子時(shí):使用有意義的名稱以便人們理解你的意圖)。

一旦我們談?wù)撏婕?,就?huì)很清楚:一個(gè)Player對(duì)象可能應(yīng)該模擬一個(gè)(人類或非人類)玩家。沒有“沒有”名字或年齡的人類。這告訴你:錯(cuò)誤的方法。你的類和模型應(yīng)該反映現(xiàn)實(shí)。

您不會(huì)預(yù)先創(chuàng)建空對(duì)象;您在有意義的時(shí)間點(diǎn)創(chuàng)建它們(然后您向它們提供必要的信息,因此您可以理想地通過將所有字段聲明為最終字段來使對(duì)象不可變)。

所以,長(zhǎng)話短說:退后一步,重新考慮你的設(shè)計(jì)。如果有“某事”不需要存在填充的 Player 對(duì)象,那么這可能應(yīng)該是靜態(tài)方法,并且它可能應(yīng)該位于 Player 類上。


查看完整回答
反對(duì) 回復(fù) 2022-07-06
?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

但在這種情況下,我實(shí)際上并不想用值初始化一個(gè)對(duì)象,而只是將它用作對(duì)象的引用指針,這樣我就可以調(diào)用該類中的方法

問題是這些方法通常需要對(duì)象的狀態(tài)才能有意義(即要初始化的字段)。static如果在您的情況下他們不這樣做,那么制作方法(和 call ClassC.methodC())或?qū)⑦@些方法放在具有默認(rèn)構(gòu)造函數(shù)的其他類上可能更有意義。


查看完整回答
反對(duì) 回復(fù) 2022-07-06
  • 2 回答
  • 0 關(guān)注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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