私はJavaで責任チェーンのデザインパターンを使用しています。チェーン全体は、特定のタイプのオブジェクトの要求を表します。チェイン内の各「ハンドラ」は、要求された1タイプのユニットを処理します。 すべてのリクエストは本質的に同じ方法で処理されるので、 "Handler"クラスの汎用を作成しようとしました。 だから私はこのような方法で(それが唯一の私の問題を難読化になるので、それ自体の取り扱いが簡略化される)必要があるハンドルクラスで:責任を負う責任のハンドラをJavaジェネリックで
public class Handler<T>{
int required;
Handler<?> next;
public void handle(Object O){
if(o instanceof T){
required --;
}else{
next.handle(o);
}
}
}
問題は、このようなinstanceofは不可能であるということです。タイプTは実行時に明示的に格納されていないため(または、私がインターネットでの研究中に理解したもの)です。だから私の質問は:最良の選択肢は何ですか?
確かに...より高いオブジェクトレベルで動作しますが、ジェネリックスはコンパイル時にメソッドシグネチャの 'Object'にデフォルト設定されているようです。とにかく。 2番目のソリューションは削除されていますが、最初のソリューションはまだ達成しようとしているものにぴったりです –
これは私が達成したいソリューションに最も近いものです。今ではジェネリック部分を削除することができます。なぜなら、Classを引数としてすべて行うことができるからです – Ingdas