RxTable extends RxEntity<Table, DatabaseCore> { @SuppressWarnings("unchecked") public <T> Observable<T> get(final String key, final TypeToken<? extends T> tt) { return exec(t -> t.get(mVContext, key, tt.getType())) .map(x -> (T) x); } RxTable(final String name, final RxDb rxDb); protected  RxTable(final RxTable other); @Override Observable<Table> mapFrom(final DatabaseCore db); Observable<SingleWatchEvent<T>> watch(final String key, final TypeToken<T> tt,
                                                     final T defaultValue); Observable<SingleWatchEvent<T>> watch(final String key, final Class<T> type,
                                                     final T defaultValue); Observable<RangeWatchBatch<T>> watch(
            final PrefixRange prefix, @Nullable final Func1<String, Boolean> keyFilter,
            final TypeToken<T> tt); Observable<RangeWatchBatch<T>> watch(
            final PrefixRange prefix, @Nullable final Func1<String, Boolean> keyFilter,
            final Class<T> type); Observable<T> exec(final Func1<Table, ListenableFuture<T>> op); Observable<Void> put(final String key, final T value,
                                    final TypeToken<T> tt); Observable<Void> put(final String key, final T value,
                                    final Class<T> type); @SuppressWarnings("unchecked") Observable<Void> put(final String key, @NonNull final T value); @SuppressWarnings("unchecked") Observable<T> get(final String key, final TypeToken<? extends T> tt); Observable<T> get(final String key, final Class<? extends T> type); Observable<T> get(final String key, final Class<? extends T> type,
                                 final T defaultValue); Observable<Void> delete(final String key); Observable<Void> destroy();  }
@Test public void testPrefixWatch() throws Exception { putInitial("Hello", "world"); Thread.sleep(BLOCKING_DELAY_MS); assertEquals("world", mData.get("Hello")); putChange("Hello", "Seattle"); putChange("Goodnight", "moon"); Thread.sleep(BLOCKING_DELAY_MS); assertEquals("Seattle", mData.get("Hello")); assertEquals("moon", mData.get("Goodnight")); putChange("Hello", null); Thread.sleep(BLOCKING_DELAY_MS); assertFalse("Delete change", mData.containsKey("Hello")); }