私は次のエラーが表示されますConcurrentLinkedQueueのaddメソッドを使用して問題を抱えている使用して、引数の不一致:Javaのジェネリック
は方法がタイプConcurrentLinkedQueueに(メッセージ)を追加の引数には適用されません ですが(クラス)
基本的には、私はそれが奇妙な原因「要求」はインターフェイスを拡張するインタフェースである見つける
、(タイプメッセージでなければなりません)引数「タイプは、」間違ったクラスであることを述べています"Message"というように、 "Request"を拡張する 'type'は "Message"タイプでもあります。
ありがとうございます。
package bgu.spl.mics;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.ArrayList;
public class MessageBusImpl implements MessageBus {
private ConcurrentHashMap<String , ConcurrentLinkedQueue<Message>> allQueues = new ConcurrentHashMap<>(); // Mapping from a microService name to it's message-queue
private ConcurrentHashMap<Message, ArrayList<ConcurrentLinkedQueue<Message>>> messageTypeToSubsribers = new ConcurrentHashMap<>(); // Mapping from a message type to an ArrayList of the message-queues which are subscribed to it
@Override // make MicroService @m a subscriber of Request @type
public void subscribeRequest(Class<? extends Request> type, MicroService m) {
allQueues.get(m.getName()).add(type);
}