[英]CLS parameter in Singletons
我正在Java上的Singletons上进行练习,必须使用cls参数才能完成它。 我对Java还是很陌生,还没有遇到过。
public class Speakerphone extends Object{
public void shoutMessage()
我必须执行以下操作才能完成代码。 如何使用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.