Funnel
Date: 2016-05-24

com.google.common.hash

## Interface Funnel<T>

- All Superinterfaces:
    java.io.Serializable

      @Beta
      public interface Funnel<T>
      extends java.io.Serializable

  An object which can send data from an object of type `T` into a `PrimitiveSink`. Implementations for common types can be found in `Funnels`.

  Note that serialization of bloom filters requires the proper serialization of funnels. When possible, it is recommended that funnels be implemented as a single-element enum to maintain serialization guarantees. See Effective Java (2nd Edition), Item 3: "Enforce the singleton property with a private constructor or an enum type". For example:

         public enum PersonFunnel implements Funnel<Person> {
           INSTANCE;
           public void funnel(Person person, PrimitiveSink into) {
             into.putUnencodedChars(person.getFirstName())
                 .putUnencodedChars(person.getLastName())
                 .putInt(person.getAge());
           }
         }

  Since:
    11.0

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `funnel(T from, PrimitiveSink into)` Sends a stream of data from the `from` object into the sink `into`.

- - ### Method Detail

    - #### funnel

          void funnel(T from,
                    PrimitiveSink into)

      Sends a stream of data from the `from` object into the sink `into`. There is no requirement that this data be complete enough to fully reconstitute the object later.
      Since:
        12.0 (in Guava 11.0, `PrimitiveSink` was named `Sink`)