Ошибка при использовании чего-либо(); при тестировании Android требуются несовместимые типы: Matcher ‹View› найдено: Matcher ‹Object›

Я запускаю приведенный ниже код и получаю ошибку при возврате чего-либо();

error: incompatible types
required: Matcher <View>
found:    Matcher <Object>

/** 
     * Perform action of waiting until UI thread is free. <p/> E.g.: onView(isRoot()).perform(waitUntilIdle());
     * @return
     */
    public static ViewAction waitUntilIdle(){
      return new ViewAction(){
        @Override public Matcher<View> getConstraints(){
          return anything();
        }
        @Override public String getDescription(){
          return "wait until UI thread is free";
        }
        @Override public void perform(    final UiController uiController,    final View view){
          uiController.loopMainThreadUntilIdle();
        }
      }
    ;
    }

Любые идеи?


person UmAnusorn    schedule 21.10.2015    source источник
comment
Сопоставитель типов‹Объект›, например return (Matcher<View> )anything().   -  person Umer Farooq    schedule 21.10.2015
comment
Уже пробовал, получил ошибку неконвертируемых типов, не может конвертировать   -  person UmAnusorn    schedule 21.10.2015
comment
Ошибка: (234, 37) ошибка: требуются непреобразуемые типы: Matcher‹View› найдено: Matcher‹Object›   -  person UmAnusorn    schedule 21.10.2015
comment
Я предполагаю, что Matcher‹?› является структурой данных. Таким образом, самое простое решение, которое вы можете попробовать, это перебрать все элементы в Matcher‹Object› и поместить их в другое Matcher‹View› и вернуть это Matcher‹View›. Matcher<View> temp = new Matcher(); for(Object view : Matcher<Object>) temp.add((View)view); return temp;   -  person Umer Farooq    schedule 21.10.2015
comment
Я понимаю вашу идею, но она не может повторяться таким образом. Я тоже не знаю, как это сделать.   -  person UmAnusorn    schedule 21.10.2015
comment
Что такое Matcher‹?› ? От чего оно простирается?   -  person Umer Farooq    schedule 21.10.2015
comment
пакет org.hamcrest; общедоступный интерфейс Matcher‹T› расширяет SelfDescribing   -  person UmAnusorn    schedule 21.10.2015
comment
Я не знаю, что такое SelfDescribing. Я спрашиваю, является ли Matcher‹?› ArrayList, hashmap, набором?   -  person Umer Farooq    schedule 21.10.2015
comment
Извините, я думаю, что это не ArrayList, хэш-карта, набор   -  person UmAnusorn    schedule 21.10.2015
comment
Предоставьте реализацию для чего угодно().   -  person Umer Farooq    schedule 21.10.2015
comment
искать что-нибудь(); в github.com /hamcrest/JavaHamcrest/blob/   -  person UmAnusorn    schedule 21.10.2015
comment
попробуйте вернуть (Matcher‹View›) что-нибудь (). newInstance ()   -  person Umer Farooq    schedule 21.10.2015
comment
Спасибо за вашу помощь, но не могу использовать .newInstance() с ошибкой, не удается разрешить метод newInstance()   -  person UmAnusorn    schedule 21.10.2015
comment
Сообщите о своем решении, если вы его найдете.   -  person Umer Farooq    schedule 21.10.2015
comment
Конечно, @UmerFarooq, кстати, наше имя немного похоже Эм, Умер :)   -  person UmAnusorn    schedule 21.10.2015
comment
вы получаете ошибку времени компиляции?   -  person yogurtearl    schedule 22.10.2015
comment
@UmerFarooq ответ здесь, это работа.   -  person UmAnusorn    schedule 22.10.2015


Ответы (1)


anything() не является универсальным методом, поэтому вы всегда получите Matcher<Object>.

Внутри anything() используется класс IsAnything. Вы можете создать свой собственный метод anyView() для возврата Matcher<View>.

public static ViewAction waitUntilIdle(){
    return new ViewAction(){
        @Override public Matcher<View> getConstraints(){
            return anyView();
        }

        @NonNull
        private Matcher<View> anyView() {
            return new IsAnything<>();
        }

        @Override public String getDescription(){
            return "wait until UI thread is free";
        }
        @Override public void perform(    final UiController uiController,    final View view){
            uiController.loopMainThreadUntilIdle();
        }
    }
            ;
}
person yogurtearl    schedule 22.10.2015