簡體   English   中英

單例中的CLS參數

[英]CLS parameter in Singletons

我正在Java上的Singletons上進行練習,必須使用cls參數才能完成它。 我對Java還是很陌生,還沒有遇到過。

public class Speakerphone extends Object{
public void shoutMessage()

我必須執行以下操作才能完成代碼。 如何使用cls參數完成此操作?

  1. shoutMessage
  2. 將消息發送到所有的cls參數實例的偵聽器

@param talker將發送其消息的Talker(Talker)

@param cls一個Class對象,表示偵聽器應從其擴展的類型以便接收消息(Class)

@什么都不返回

像這樣嗎

說話者:

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);
        }
    }    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM