Есть ли другой способ сделать это? Возможно, использование отражения?
blockquote>Да. Отражение может использоваться для обхода правил доступа Java, если ваше приложение имеет полную привилегию.
Например, чтобы получить доступ к полю
private
объекта из другого класса, вам необходимо:
- Получить объект
Class
объекта.- Использовать метод
Class.getDeclaredField(...)
для получения объектаField
для поля.- Вызов
Field.setAccessible(true)
чтобы отключить проверку доступа.- Вызовите
Class.getField(object, Field)
, чтобы получить значение поля (или полевое значение, если оно является примитивным типом).Если сам класс недоступен, вам необходимо убедиться, что вы не ссылаетесь на идентификатор классов в исходном коде ... 'cos, что приведет к ошибке компиляции. Вместо этого назначьте его ссылку на (скажем) переменную типа
Object
или какого-либо другого видимого супертипа и произнесите более конкретные операции над экземпляром рефлексивно.
Как вы можете себе представить, это утомительно и склонность к ошибкам. Вам рекомендуется найти лучший способ, например:
- получить поставщиков классов, чтобы исправить все, что заставляет вас нарушать ограничения видимости,
- получение поставщиков классов для изменения их видимости,
- поиск другого способа использования классов, которые не требуют взломать их абстракцию, или
- , отбрасывая их и обнаруживая (или записывая ) что-то лучше.
(Вообще говоря, если вам нужно сломать абстракцию, тогда что-то не так с самой абстракцией или с тем, как вы ее используете.)
< hr>Наконец, я должен добавить, что ненадежный код (должен быть) запущен в изолированной программной среде безопасности, которая блокирует использование ключевых рефлексивных операций.
По умолчанию расширение IMAP не активируется при установке PHP.
Для активации отредактируйте свой php.ini в xampp и добавьте extension=php_imap.dll
В Linux отредактируйте php.ini
Удалите ;
из ;extension=imap.so