У меня есть следующий интерфейс:
public interface ProvidersFilter {
void setQuery(@NonNull Object query);
Object apply();
}
И следующие классы реализации:
Первая реализация:
public class ProvidersRemoteFilter implements ProvidersFilter {
private Query mQuery;
@Override
public void setQuery(@NonNull Object query) {
if (query instanceof Query) {
mQuery = (Query) query;
} else {
throw new RuntimeException("query object must be of type com.google.firebase.firestore.Query");
}
}
@Override
public Object apply() {
return mQuery;
}
}
Вторая реализация:
public class ProvidersLocalFilter implements ProvidersFilter {
private String mQuery;
@Override
public void setQuery(@NonNull Object query) {
if (query instanceof String) {
mQuery = (String) query;
} else {
throw new RuntimeException("query object must be of type String");
}
}
@Override
public Object apply() {
return mQuery;
}
}
Я бы хотел не использовать instanceof
, обобщая мой интерфейс и реализуя классы.