Можно ли совместить generic type двух разных классов в Java?

200
05 сентября 2017, 09:09

Делаю андроид приложение. На DataBinding описываю смену врагментов в рамках одной активити. Сделал класс Sequense, который управляет фрагментами и enum'ы, которые описывают флоу фрагментов в рамках каждой активити. Так как наследовать enum мы не можем, то сделал для них интерфейс Screen где определил некоторые методы. Выглядит это приблизительно так (проблему опишу в комментариях)

public class Sequence<T extends Enum<T> & Sequence.Screen> extends BaseObservableField<FragmentIntent> {

    ........
    // Такой метод работает адекватно
    public T nextScreen() {
        Enum[] values = currentScreen.getValues();
        .........
    }
    // Но если мы пытаемся кастить getValues к T, то получаем ошибку о несовместимости 
    // Enum[] и T[] хотя и в Screen и в Sequence тип T описан одинаково 
    // в строке T[] values = currentScreen.getValues();
    public T prevScreen() {
        T[] values = currentScreen.getValues();
        .......
    }
    ..................
    public interface Screen<T extends Enum<T> & Sequence.Screen> {
        T[] getValues();
        ..............
    }
}

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

пример класса, расширенного интерфейсом Screen

public enum CorpEditTemplateScreen implements Sequence.Screen {
    ....................
    @Override
    public CorpEditTemplateScreen[] getValues() {
        return values();
    }
}
READ ALSO
Две строки в элементе меню

Две строки в элементе меню

Необходимо динамически добавлять информацию о пользователе (имя + email) в элемент менюИнформация должна быть отображена в две строки в одном...

203
Grant location permission in Runtime по нажатии кнопки

Grant location permission in Runtime по нажатии кнопки

Смотрел уроки по данной теме и там нашел вот этот код:

270
Регулярные выражения для выборки слов

Регулярные выражения для выборки слов

Добрый день, есть строка

253