我正在用Java对单例进行练习,为了完成它,我必须使用cls参数。我对Java非常陌生,还没有遇到这种情况。
public class Speakerphone extends Object{
public void shoutMessage()我必须完成以下操作才能完成代码。我如何利用cls参数来完成这个任务?
@param talker他的信息将被发送( Talker )
@param表示侦听器为接收消息( Class )而应该扩展的类型的Class对象
@什么也不回
发布于 2015-07-21 18:12:32
像这样吗?
健谈者:
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);
}
}
}https://stackoverflow.com/questions/31546200
复制相似问题