Получение непроверенного предупреждения о сотворении при создании фабрики ViewModel

Вот более общее решение, которое не требует, чтобы списки были sliceable, поэтому вы можете использовать его на других итерациях, например, генераторах.

Мы сохраняем deque размер start пока мы не встретим его. Затем мы добавляем эти значения в список и продолжаем повторять последовательность. Как и мы, мы сохраняем deque размер конечной последовательности, пока не увидим ее, а также добавим элементы в список, который мы сохраняем. Если мы сталкиваемся с конечной последовательностью, мы yield, которые перечислили и установили deque для сканирования следующей стартовой последовательности.

from collections import deque

def gen(l, start, stop):
    start_deque = deque(start)
    end_deque = deque(stop)
    curr_deque = deque(maxlen=len(start))
    it = iter(l)
    for c in it:
        curr_deque.append(c)
        if curr_deque == start_deque:
            potential = list(curr_deque)
            curr_deque = deque(maxlen=len(stop))
            for c in it:
                potential.append(c)
                curr_deque.append(c)
                if curr_deque == end_deque:
                    yield potential
                    curr_deque = deque(maxlen=len(start))
                    break

print(list(gen([99, 99, 1, 2, 3, 99, 99, 99, 4, 5, 6, 99, 99, 1, 2, 3, 99, 4, 5, 6, 99], [1,2,3], [4,5,6])))

# [[1, 2, 3, 99, 99, 99, 4, 5, 6], [1, 2, 3, 99, 4, 5, 6]]
0
задан Gourav 19 January 2019 в 09:57
поделиться

1 ответ

Одна вещь, которую вы можете сделать, это подавить предупреждение, используя аннотацию для « Unchecked casts ».

Проверьте пример:

@SuppressWarnings("unchecked") // This would be helpful for lint warnings for casts.
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
    if (modelClass.isAssignableFrom(clubPageViewModel.class)) {
        // Or better use here if it doesn't provides error @SuppressWarnings("unchecked")
        return (T) new clubPageViewModel(mDataSource);
    }
    throw new IllegalArgumentException("Unknown ViewModel class");
}

Итак, что делает эта аннотация @SuppressWarnings ?

По сути, это означает, что Предупреждения именованного компилятора должны подавляться в аннотированном элементе (и во всех элементах программы, содержащихся в аннотированном элементе) .

Обратите внимание, что набор предупреждений, подавляемых в данном элементе, является расширенным набором предупреждений, подавляемых во всех содержащих элементах.

Например, , если вы аннотируете класс для подавления одного предупреждения и аннотируете метод для подавления другого, оба метода будут подавлены в методе.

В целях стиля программисты всегда должны использовать эту аннотацию для наиболее глубоко вложенного элемента, где она эффективна. Если вы хотите подавить предупреждение в конкретном методе, вы должны аннотировать этот метод, а не его класс.

Подробнее об этой аннотации можно прочитать здесь .

0
ответ дан Jeel Vankhede 19 January 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: