package call; import java.util.HashSet; import java.util.List; import java.util.Set; public abstract class AudioDevices<A extends AudioDevice> extends AbstractId { Set<AudioDeviceUpdateListener> listeners = new HashSet<>(); public abstract List<A> getAudioDevices(); public void addListener(AudioDeviceUpdateListener listener) { listeners.add(listener); } protected void notifyListeners() { for (AudioDeviceUpdateListener listener : listeners) { listener.onAudioDeviceUpdate(); } } public abstract A getCurrentDevice() throws UnknownDefaultValueException; public abstract void setCurrentDevice(AudioDevice device); }