![](/img/trans.png)
[英]Combine multiple `Collectors::groupBy` functions with Java Streams
[英]Combine multiple identical java functions
非常愚蠢的問題。 我已經習慣了php。
我聲明了多個android MediaPlayer對象。 基於按下的按鈕,我想在它們之間切換。 我目前有3個相同的功能-像這樣...
public void playSound3() throws IOException {
if(sound3.isPlaying()) {
sound3.stop();
sound3.reset();
}
}
這被稱為playSound3()
我想將其組合為playSound(1),但在MediaPlayer對象的情況下卻無法弄清楚該如何做。
任何幫助將不勝感激。
將聲音作為參數傳遞。
// Not sure what type your sound is.
public void playSound(MediaPlayer sound) throws IOException {
if(sound.isPlaying()) {
sound.stop();
sound.reset();
}
}
嘗試這個:
public void playSound(MediaPlayer sound) throws IOException
{
if(sound.isPlaying())
{
sound.stop();
sound.reset();
}
}
然后
playSound(sound1);
playSound(sound2);
&c
如果確實需要將參數設為int,則可以將MediaPlayer對象放入數組中:
public void playSound(int n) throws IOException {
static MediaPlayer[] mediaPlayers = {sound0,sound1,sound2,sound3};
if (n >= 0 && n < mediaPlayers.length) {
MediaPlayer mp = mediaPlayers[n];
if(mp.isPlaying()) {
mp.stop();
mp.reset();
}
}
}
創建一個類似的界面
public Interface IMySoundPlayer {
void playSound() throws IOException;
}
創建一個表示接口對象的數組並填充它
IMySoundPlayer[] soundPlayers = new IMySoundPlayer[] { new SoundPlayer(sound1), new SoundPlayer(sound2), new SoundPlayer(sound3) };
隨着SoundPlayer的發展,
public class SoundPlayer implements IMySoundPlayer {
private MediaPlayer mBackend;
public SoundPlayer(MediaPlayer backend) {
mBackend = backend;
}
public void playSound() throws IOException {
if(mBackend.isPlaying()) {
mBackend.stop();
mBackend.reset();
}
}
}
使用整數或其他方案在3個實例之間旋轉,並在每個實例上調用playSound
。
如果您需要更多指導,請發表評論。
免責聲明
我已經做到了這一點,沒有測試(甚至沒有語法)。
使用某種列表或數組來存儲您的MediaPlayer對象,然后使您的方法將MediaPlayer作為其參數。 然后,您可以將數組所需的任何元素傳遞給單個方法。
MediaPlayer[] players = {sound1, sound2, sound3};
public void playSound(MediaPlayer sound) throws IOException {
if(sound.isPlaying()) {
sound.stop();
sound.reset();
}
}
// Call method using sound1
playSound(players[0]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.