1
一般的なメッセージングシステムを実装しようとしています。デスティネーションに応じて、クラスはサーバによって正しくデシリアライズされるために異なるインタフェースを実装する必要があります。Javaのジェネリックインターフェイスを拡張する汎用の汎用クラスを正しく作成する方法
public interface IBasicInput
public interface IBasicOutput
public interface IMessage <I,O>
とクラスの実装:
このため私はこれらのインターフェースを持っている
public class BasicInput1 implements IBasicInput
public class BasicOutput1 implements IBasicOutput
public class Type1Message<I extends IBasicInput,O extends IBasicOutput> implements IMessage<I, O> {
/**
* @Override from IMessage
*/
public void setIput(I input) {
}
/**
* @Override from IMessage
*/
public O getResult() {
return null;
}
}
このメッセージの目的は、実装でなければなりませんIMessageがおよび入力クラスを実装するメッセージを持つことである
IBasicInputの出力と出力はIBasicOutputの実装
このクラスをインスタンス化するとき
Type mismatch: cannot convert from Type1Message to IMessage
私は理由を理解カント:
IMessage<IBasicInput,IBasicOutput> message = new Type1Message<BasicInput1,BasicOutput1>();
私はこのエラーを得ました。 Type1MessageはIMessageを実装し、BasicInputとBasicOutputは両方とも署名インタフェースを実装します。
しかし、代わりにクラスを使用すると、インターフェイスは正常に動作します。 IMessage message = new Type1Message();
ありがとうございます!