Я думаю, вам нужно проверить, что ваша таблица создана и ваши данные существуют, и вы можете их восстановить. Для этого просто перейдите по по этой ссылке и посмотрите данные в эмуляторе.
Если это работает, то я думаю, что в вашем коде получения данных нет проблем.
Нет, нет ничего как явная интерфейсная реализация C# в Java.
Зато, Java имеет ковариантные типы возврата, поэтому если Вы хотите обеспечить реализацию более со строгим контролем типов, чем интерфейс указывает, это хорошо. Например, это прекрасно:
interface Foo
{
Object getBar();
}
public class Test implements Foo
{
@Override
public String getBar()
{
return "hi";
}
}
C# не признал бы, что - и один из путей вокруг этого должен обычно реализовывать интерфейс явно и затем иметь более определенный открытый метод (обычно называемый интерфейсной реализацией).
Вы можете добиться аналогичного эффекта, используя механизм реализации анонимного интерфейса в Java.
См. Пример:
interface Foo {
void f();
}
interface Bar {
void f();
}
public class Test {
private String foo = "foo", bar = "bar";
Foo getFoo() {
return new Foo() {
@Override
public void f() {
System.out.println(foo);
}
};
}
Bar getBar() {
return new Bar() {
@Override
public void f() {
System.out.println(bar);
}
};
}
public static void main(String... args) {
Test test = new Test();
test.getFoo().f();
test.getBar().f();
}
}
Вы можете сделать это, только если методы перегружены. Если у вас есть два метода, которые должны делать разные вещи, они должны иметь разные имена ИМХО.
Нет, и он никогда не должен присутствовать в Java. Это просто еще одна кость, которую стоит бросить людям, которых не волнует хороший дизайн.
Явная реализация интерфейса никогда не должна требоваться или использоваться. Есть лучшие способы решить проблему, которую он пытается решить.