Size: a a a

Android Developers

2020 April 23

A

Alex in Android Developers
Тут понятнее! Все типы именованы)
источник

A

Alex in Android Developers
то есть я могу вызвать e.getEnumConstants()! Но не могу сохранить результат вызова, потому что неясно, какой он имеет тип в терминах дженериков. Наверное, могу избежать этой ситуации через range based for, но уже дело принципа разобраться
источник

ЯН

Ярослав Нестеров... in Android Developers
public static <T extends Enum> int[] values(Class<T> e) {
 int[] values = e.getEnumConstants<T>();
}

пальцем в небо, но что-то не очень логичное получается
источник

QH

Quantum Harmonizer in Android Developers
Ярослав Нестеров
public static <T extends Enum> int[] values(Class<T> e) {
 int[] values = e.getEnumConstants<T>();
}

пальцем в небо, но что-то не очень логичное получается
T extends Enum<T>
T[] values
источник

A

Alex in Android Developers
Хм, начинаю понимать . А без аргумента нельзя? Указать тип в угловых скобках
источник

QH

Quantum Harmonizer in Android Developers
Alex
Хм, начинаю понимать . А без аргумента нельзя? Указать тип в угловых скобках
Нет, тебе же ещё и возвращать его надо
источник

A

Alex in Android Developers
Quantum Harmonizer
T extends Enum<T>
T[] values
нет, возвращать надо int[]
источник

QH

Quantum Harmonizer in Android Developers
Alex
нет, возвращать надо int[]
Откуда он возьмётся, какой такой int[]?
источник

QH

Quantum Harmonizer in Android Developers
источник

A

Alex in Android Developers
и вообще, шаблонным должен быть весь класс, а внутри два метода: String[] names() и int[] values(). Но я не нашёл такого примера.
источник

QH

Quantum Harmonizer in Android Developers
Alex
и вообще, шаблонным должен быть весь класс, а внутри два метода: String[] names() и int[] values(). Но я не нашёл такого примера.
В джаве нет шаблонов, например.
источник

A

Alex in Android Developers
Так в том и дело: мне нужно пройти по массиву, полученному из getEnumConstants(), и для каждого элемента переложить ordinal() в массив интов
источник

QH

Quantum Harmonizer in Android Developers
Alex
Так в том и дело: мне нужно пройти по массиву, полученному из getEnumConstants(), и для каждого элемента переложить ordinal() в массив интов
получится диапазон, типа [0, 1, 2, …], какой в этом смысл?
источник

DB

Dmitro Boiko in Android Developers
а подскажите делаю image capture, самсунг гадина вращает фото, есть костыли?
exif у файла всегда 0
источник

A

Alex in Android Developers
Quantum Harmonizer
получится диапазон, типа [0, 1, 2, …], какой в этом смысл?
Да, именно это и нужно. Отправлю этот диапазон в С++ и буду обрабатывать и валидировать. Для каждого айтема в enum нужно узнать его имя и ordinal() в виде массива строк и интов. Потому что этот массив легко передаётся в JNI, d отличие, например, от массива самих значений enum.
источник

QH

Quantum Harmonizer in Android Developers
Alex
Да, именно это и нужно. Отправлю этот диапазон в С++ и буду обрабатывать и валидировать. Для каждого айтема в enum нужно узнать его имя и ordinal() в виде массива строк и интов. Потому что этот массив легко передаётся в JNI, d отличие, например, от массива самих значений enum.
public static int[] ordinals(Class<? extends Enum<?>> e) {
   return intRange(e.getEnumConstants().length);
}
public static int[] intRange(int length) {
   int[] ordinals = new int[length];
   for (int i = 0; i < length; i++)
       ordinals[i] = i;
   return ordinals;
}
источник

A

Alex in Android Developers
ХитрО. А если enum {red = 0, green = 3, blue = 5} ?
источник

QH

Quantum Harmonizer in Android Developers
Alex
ХитрО. А если enum {red = 0, green = 3, blue = 5} ?
Невозможно.
источник

A

Alex in Android Developers
Невозможно получить эти значения через рефлексию?
источник

QH

Quantum Harmonizer in Android Developers
Alex
Невозможно получить эти значения через рефлексию?
Невозможно, чтобы ordinalы были не по порядку.
источник