@SuppressWarnings("unchecked") private <T>T readByClass(BufferInput<?> buffer){
  String name=buffer.readUTF8();
  if (whitelistRequired.get())   throw new SerializationException("cannot deserialize unregistered type: " + name);
  Class<T> type=(Class<T>)types.get(name);
  if (type == null) {
    try {
      type=(Class<T>)Class.forName(name);
      if (type == null)       throw new SerializationException("cannot deserialize: unknown type");
      types.put(name,type);
    }
 catch (    ClassNotFoundException e) {
      throw new SerializationException("object class not found: " + name,e);
    }
  }
  TypeSerializer<T> serializer=getSerializer(type);
  if (serializer == null)   throw new SerializationException("cannot deserialize unregistered type: " + name);
  return serializer.read(type,buffer,this);
}

@ SuppressWarnings ( "unchecked" ) private < T > T readByClass ( BufferInput < ? > buffer ) { String name = buffer . readUTF8 ( ) ; if ( whitelistRequired . get ( ) ) throw new SerializationException ( "cannot deserialize unregistered type: " + name ) ; Class < T > type = ( Class < T > ) types . get ( name ) ; if ( type == null ) { try { type = ( Class < T > ) Class . forName ( name ) ; if ( type == null ) throw new SerializationException ( "cannot deserialize: unknown type" ) ; types . put ( name , type ) ; } catch ( ClassNotFoundException e ) { throw new SerializationException ( "object class not found: " + name , e ) ; } } TypeSerializer < T > serializer = getSerializer ( type ) ; if ( serializer == null ) throw new SerializationException ( "cannot deserialize unregistered type: " + name ) ; return serializer . read ( type , buffer , this ) ; }
reads a writable object .
