0

シングルトンで Java の演習を行っていますが、それを完了するには cls パラメータを使用する必要があります。私はJavaに非常に慣れていないので、まだこれに出くわしていません。

public class Speakerphone extends Object{
public void shoutMessage()

コードを完成させるには、次のことを行う必要があります。cls パラメーターを使用してこれを終了するにはどうすればよいですか?

  1. 叫びメッセージ
  2. cls パラメータのインスタンスであるすべてのリスナーにメッセージを送信します

@param talker メッセージが送信される Talker (Talker)

@param cls メッセージを受信するために Listener が拡張する必要がある型を表す Class オブジェクト (Class)

@何も返さない

4

1 に答える 1

0

このようなもの?

話者:

public interface Talker<T> {

    public T getMessage();
}

リスナー:

public interface Listener<T> {

    public void receive(T message);
}

スピーカーフォン:

public final class Speakerphone {

    public static final Speakerphone INSTANCE = new Speakerphone();
    private Map<Class, List<Listener>> listenersByTypes = new HashMap<>();

    private Speakerphone() {
    }


    public <T> void register(Listener<T> listener, Class<T> c){
        List<Listener> listeners = listenersByTypes.get(c);
        if (listeners == null){
            listeners = new ArrayList<>();
            listenersByTypes.put(c, listeners);
        }
        listeners.add(listener);
    }

    public <T> void unregister(Listener<T> listener, Class<T> c){
        List<Listener> listeners = listenersByTypes.get(c);
        if (listeners != null){
            listeners.remove(listener);
        }
    }

    public <T> void shoutMessage(Talker<T> talker, Class<T> c) {
        T message = talker.getMessage();
        List<Listener> listeners = this.listenersByTypes.get(c);
        for (Listener<T> listener : listeners) {
            listener.receive(message);
        }
    }    
}
于 2015-07-21T18:12:32.617 に答える