Как исправить & ldquo; непроверенный актерский состав & rdquo; из Generics для другого интерфейса

Ваши активы упакованы в ваш apk, поэтому вы не можете ссылаться на них напрямую во время выполнения, как в приведенном вами образце кода. У вас есть 2 варианта:

  • Обработать активы как входной поток, используя

Context.getAssets().open('cacert.cert')

  • Копировать из вашего ресурса в локальный файл в файле dir, а затем ссылайтесь на имя файла скопированного файла.
0
задан yenk 16 January 2019 в 17:16
поделиться

1 ответ

Когда вы делаете свой метод универсальным, это означает, что вызывающая сторона имеет контроль над параметром типа. Абонент всегда может предоставить все, что встречает любые границы, и у вас нет границ. Вызывающая сторона может предоставить Integer, Object или Foo, и этот метод должен возвращать экземпляр этого типа.

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

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

Если у вас нет общего интерфейса, но вы должны вызывать определенные методы для возвращаемого объекта, затем перенесите свою условную логику за пределы этого метода в вызывающий код или выполните вызов метода для объекта перед его возвратом. [ 1110]

private Object get() throws Exception {
    Object m;

    if (/*some condition*/) {
        Something1 s1 = new Something1();
        s1.s1Method();
        m = s1;
    }
    else if (/*some condition*/) {
        Something2 s2 = new Something2();
        s2.s2Method();
        m = s2;
    }
    else {
        Something3 s3 = new Something3();
        s3.s3Method();
        m = s3;
    }
    return m;
}
0
ответ дан rgettman 16 January 2019 в 17:16
поделиться
Другие вопросы по тегам:

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