Код: Выделить всё
public interface Searchable{
public boolean matches(String text);
}
public abstract class AbstractSearchable implements Searchable{
private String name;
public boolean matches(String text){
return null != name && name.startswith(text);
}
}
Тогда у меня есть следующий тест:
Код: Выделить всё
public class SearchableTest{
public void testSearchable(){
//get an instance which is either Searchable or AbstractSearchable
T item = getSomeTestItem();
checkItem(item);
}
public void checkItem(Searchable searchable){
throw new UnsupportedOperationException("Please implement your own check for Searchable and Override checkItem(Searchable)!");
}
public void checkItem(AbstractSearchable item){
//here i can Implement the Test using the name from AbstractSearchable
//... implementation
}
}
Мне известно об этом быстром исправлении
Код: Выделить всё
public void checkItem(Searchable searchable){
if (searchable instanceof AbstractSearchable){
checkItem((AbstractSearchable)searchable);
} else {
throw new UnsupportedOperationException("Please implement your own check for Searchable and Override checkItem(Searchable)!");
}
}
Подробнее здесь: https://stackoverflow.com/questions/229 ... oesnt-work