我試圖取代這段代碼與三元表達式:更換爲三元不工作
if (m_dataSource instanceof URL) {
m_audioInputStream = AudioSystem.getAudioInputStream((URL) m_dataSource);
m_audioFileFormat = AudioSystem.getAudioFileFormat((URL) m_dataSource);
} else if (m_dataSource instanceof File) {
m_audioInputStream = AudioSystem.getAudioInputStream((File) m_dataSource);
m_audioFileFormat = AudioSystem.getAudioFileFormat((File) m_dataSource);
} else if (m_dataSource instanceof InputStream) {
m_audioInputStream = AudioSystem.getAudioInputStream((InputStream) m_dataSource);
m_audioFileFormat = AudioSystem.getAudioFileFormat((InputStream) m_dataSource);
}
我努力:
m_audioInputStream = AudioSystem.getAudioInputStream(
m_dataSource instanceof URL?(URL)m_dataSource
:m_dataSource instanceof File?(File) m_dataSource
:m_dataSource instanceof InputStream ?(InputStream) m_dataSource
:(something other));
,但我得到這個錯誤:
類型AudioSystem中的getAudioInputStream(InputStream)方法不適用於參數((((m_dataSource instanceof URL)?(URL))m_dataSource :((m_dataSource instan ceof文件)? (File)m_dataSource:((m_dataSource instanceof InputStream)?(InputStream)m_dataSource:null))))
爲什麼它默認選擇InputStream?
編輯: m_dataSource是Object。
我錯過了什麼 - 你檢查m_dataSource是一個URL,然後你把它轉換成一個URL,它已經是?這似乎沒有多大意義。 –
它似乎沒有解析三元條件。 – khuderm
@Engineer Dollery我試圖替換,如果我已經提到上面,如果第一個是假的去其他如果真的得到這個...等等 – GOXR3PLUS