Pergunta

Qual é a diferença entre esses dois métodos:

pacote de processo:

PacketListener pListener = new PacketListener() {
        @Override
        public void processPacket(Packet packet) {
            if(packet instanceof Presence) {
               //..
            }
        }
    };

e aceitar :

PacketFilter pFilter = new PacketFilter() {
        @Override
        public boolean accept(Packet packet) {
            return true;
        }
    };

Eles não são capazes de fazer a mesma coisa?

observação :

con.addPacketListener(pListener, pFilter);
Foi útil?

Solução

Parece claro. o PacketFilter filtros pacotes para processamento pelo PacketListener.

Outras dicas

Conforme você entende, o PacketFilter é usado antes do PacketListener para filtrar os dados do pacote dos tipos de correspondência. Somente o pacote que satisfaz o PacketFilter pode inserir o processamento do PacketListener.

E o PacketFilter é uma interface que declara apenas um método: aceitar.

PacketListener Fornece um mecanismo para escutar pacotes que passam por um filtro especificado.Isso permite a programação no estilo de eventos-toda vez que um novo pacote é encontrado, o método ProcessPacket (pacote) será chamado.Esta é a abordagem oposta à funcionalidade fornecida por um PacketCollector que permite bloquear enquanto aguarda os resultados.

PacketFilter Define uma maneira de filtrar pacotes para atributos específicos.Os filtros de pacotes são usados ​​ao construir ouvintes ou colecionadores de pacotes - o filtro define quais pacotes correspondem aos critérios do colecionador ou ouvinte para obter mais processamento de pacotes.

Vários filtros predefinidos são definidos.Esses filtros podem ser combinados logicamente para filtros de pacotes mais complexos usando os filtros e filtros de orfilter.Também é possível definir seus próprios filtros implementando esta interface.O exemplo de código abaixo cria um filtro trivial para pacotes com um ID específico.

// Use an anonymous inner class to define a packet filter that returns
// all packets that have a packet ID of "RS145".
PacketFilter myFilter = new PacketFilter() {
    public boolean accept(Packet packet) {
        return "RS145".equals(packet.getPacketID());
    }
 };
// Create a new packet collector using the filter we created.
PacketCollector myCollector = packetReader.createPacketCollector(myFilter);

As declarações acima são do documento java.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top