Не применяется рефлексия в android studio

147
26 апреля 2019, 01:40

Всем привет. У меня стоит следующая задача, написание rest клиента для приложения в андроид. Проблема возникла при попытке использования нестандартных методов, начал искать как в HttpURLConnection добавить свой метод. Нашел следующее решение:

private static void allowMethods(String... meth) {
    try {
        System.out.println("RRR=" + HttpURLConnection.class.getDeclaredField("method"));
        System.out.println("RRR=" + HttpURLConnection.class.getDeclaredField("methods"));
        System.out.println(getAllModelFields(HttpURLConnection.class));
        Field methodsField = HttpURLConnection.class.getDeclaredField("methods");
        Field modifiersField = Field.class.getDeclaredField("modifiers");
        modifiersField.setAccessible(true);
        modifiersField.setInt(methodsField, methodsField.getModifiers() & ~Modifier.FINAL);
        methodsField.setAccessible(true);
        String[] oldMethods = (String[]) methodsField.get(null);
        Set<String> methodsSet = new LinkedHashSet<>(Arrays.asList(oldMethods));
        methodsSet.addAll(Arrays.asList(meth));
        String[] newMethods = methodsSet.toArray(new String[0]);
        methodsField.set(null/*static field*/, newMethods);
    } catch (NoSuchFieldException e) {
        throw new IllegalStateException(e);
    }catch (IllegalAccessException e){
        e.printStackTrace();
    }
}

Далее в своей программе вызываю этот метод, передаю туда название нужного мне нового метода, и далее по стандарту пишу создание и выполнение запроса с указанием моего метода " con.setRequestMethod("MOVE");"

НО!!! Когда вставил этот код в android studio, ide сразу сообщила о проблеме, а именно: Cannot resolve field 'methods' less... (Ctrl+F1) This inspection detects reflective access to fields and methods which don't exist or aren't visible ну и с полем modifiers аналогично.

Попробовал этот же код в IntelliJ IDEA, там код выполняется, правда выдает варнинги. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by main (file:/D:/java/untitled1/out/production/untitled1/) to field java.lang.reflect.Field.modifiers WARNING: Please consider reporting this to the maintainers of main WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release

На что можно обратить внимание, куда копать? Заранее благодарен за ответ!

READ ALSO
FileWriter запись/создание файла

FileWriter запись/создание файла

Пишу Класс для создание/чтения файлов propertiesКаждый файл находится в своей папке

158
Как переделать метод на stream api

Как переделать метод на stream api

Как переделать метод на Stream API:

237
Блокам устанавливается атрибут style

Блокам устанавливается атрибут style

У меня есть блоки фиксированной ширины и высотыЕсли их сделать слайдерами с помощью плагина owl-carousel-2, каждому блоку устанавливается атрибут...

203
Scss файл _part.scss?

Scss файл _part.scss?

Подскажите, есть ли в less аналог _partscss

138