我剛剛試圖簡化我的類的構造函數,其中大約有50%的代碼相同,我最近偶然發現了這個問題。看起來我不能重複使用我的以前的構造函數定義(它處理初始化)從另一個重載它的構造函數。我如何在Java中使用沒有'new'的構造函數?
爲了清楚起見,這是我一直想說:
public MusicOrganizationHelper(Context context)
{
mContext = context;
// More object initializations using 'context'..
}
public MusicOrganizationHelper(Context context, ArrayList<String> fileUris)
{
MusicOrganizationHelper(context); // Why can't I do this?
for (String uri : fileUris) {
if (uri != null && !uri.equalsIgnoreCase("")) {
try {
AudioFile audioFile = read(uri);
mAudioFileMap.put(audioFile, audioFile.getTagOrCreateAndSetDefault());
} catch (CannotReadException e) {
e.printStackTrace();
}
}
}
}
我知道這可能通過使某種private void init(context)
方法很容易產生,但我只是好奇:爲什麼我不能像其他任何方法一樣調用構造函數,即使是在其類定義中也是如此?他們看起來和我很相似(他們是建設者和'農民'方法)。
對不起,如果這原來是一個明顯的事情。一般來說,我對Java
和OOP相對較新。
在此先感謝!
'這個(上下文)'....? – MadProgrammer 2014-11-23 11:00:45
查看任何java源(例如HashMap,ArrayList)。你會看到他們如何處理它。 – Maksym 2014-11-23 11:01:46