pcap-format ファイル内の特定のタイプのパケットを解析するためのインターフェイスとクラスを設計しようとしています。(特別なライブラリが存在することは知っていますが、自分でやる必要があります)
したがって、分類子インターフェイスがあり、メソッドはそれが有効なパケットであるかどうかを確認します。
public interface Classifier {
boolean classify (PcapPacket pcapPacket);
}
パーサー インターフェイスのメソッドは、内部のバイト配列PcapPacket
をいくつかのフィールドに変換します。新しい解析済みパケットと統計P
を表します。S
public interface Parser<P, S> extends Classifier {
P parsePacket (PcapPacket pcapPacket);
P parsePacket (PcapPacket pcapPacket, P outPacket);
S parseReader (PcapReader pcapReader);
}
AParser
これで、特定のパケットまたはファイルを解析できる実装が完了しました。
public class AParser implements Parser<APacket, AStats>, Classifier {
しかし、今はそれを考慮しBParser
た上で実装するのが困難です。AParser
BPacket extends APacket
public class BParser extends AParser implements Parser<BPacket, BStats> {
私はこのparsePacket
ようなことをしたいです:
BPacket parsePacket (PcapPacket pcapPacket) {
APacket apacket = super.parse(pcapPacket);
BPacket bpacket = new BPacket(apacket);
//extract val1 and val2 from pcapPacket
bpacket.set(val1, val2);
return bpacket;
}
コンパイル エラーを示す太字の行。この時点で、私のアプローチに何か問題があることがわかりました。おそらく、インターフェイスを定義するときにジェネリックを使用する必要があります。
このコードを再設計して、将来的に機能し柔軟にするためにどのように手伝ってくれますか?