Получение всех методов класса и их выполнение
1234567Class c = person.getClass(); Method[] methods = c.getDeclaredMethods(); //Получаем массив объявленных методов класса person try { methods[0].invoke(person, null); //Выполняем первый попавшийся метод } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } Более подробно расписано здесь (http://java-online.ru/java-reflection.xhtml). Вызов метода с параметрами: 12345Class aclass = obj.getClass(); Class[] paramTypes = new Class[] { String.class, int.class }; Method method = aclass.getMethod("getCalculateRating", paramTypes); Object[] args = new Object[] { new String("First Calculate"), new Integer(10) }; Double d = (Double) method.invoke(obj, args); Метод invoke принимает два параметра : первый — это объект, класс которого объявляет или наследует данный метод, а второй — массив значений параметров, которые передаются вызываемому методу.
Создание объекта класса по его имени
В общем виде это выглядет так (http://java-online.ru/java-reflection.xhtml): 123Class aclass = Class.forName("Test"); Object obj = aclass.newInstance(); Test test = (Test) obj; Пример: файл Person.java с объявлением интерфейса, в котором содержатся классы: 123456789package com.javarush.task.task14.task1411; public interface Person { class User implements Person { void foo() { System.out.println("Something"); } } class Coder implements Person { void foo() { System.out.println("Something"); } } } фрагмент файла Solution.java, находящийся в том же пакете: 1234567try{ Class c = Class.forName("com.javarush.task.task14.task1411.Person$User"); Person person = (Person)c.newInstance(); } catch (Exception | NoClassDefFoundError e){ System.out.println(e); } Замечу, что если в строке 2 вместо $User будет $user (ошибка в регистре), то будет брошен NoClassDefFoundError.
Материалы по рефлексии
http://java-online.ru/java-reflection.xhtml
Несколько типов исключений в одном блоке Catch
123456try{ ///Something } catch (Exception | NoClassDefFoundError e){ System.out.println(e); } Здесь в одном блоке Catch мы отлавливаем исключения двух типов. Замечу, что NoClassDefFoundError не является наследником класса Exception.
Изменение регистра. Сделать первую букву строки заглавной.
1234public static String firstUpperCase(String string){ if (string == null || string.isEmpty()) return ""; return string.substring(0, 1).toUpperCase() + string.substring(1).toLowerCase(); }
pfSense — Решение проблем
Второй раз встречаюсь с ситуацией, решил написать здесь. Симптомы: Не прикрепляются файлы к письмам на Яндекс почте На некоторых компьютерах очень тугой интернет, не открываются некоторые файлы. Причём на других компьютерах может быть нормально. Перед этим: Аварийное отключение питания компьютера с pfSense Web-интерфейс pfSense: Disk usage: / (ufs): 100% of 70G Решение: Заходим в Web-интерфейс pfSense -> Status -> Services Останавливаем Squid Подключаемся к pfSense при помощи Putty Очищаем файлы кэша: rm -fr /var/squid/cache/* Создаём новый кэш: squid -z Запускаем Squid
Создание корпоративного чата
Добрый день! Достаточно давно я хотел огранизовать корпоративный чат, да всё никак не мог определиться на каком ПО всё это строить. Задача: бесплатный, сервер должен быть локальным и желательно под линукс, возможность передачи файлов желательно и для пользователей кто оффлайн, красивый интерфейс и смайлики :). Путём проб и ошибок всё-таки пришел к конечному результату, который сейчас используем. Чтобы избавить Вас от столь мучительных поисков — опишу весь процесс тут. Итак, что я пробовал: Bimoid Плюсы: Бесплатный; Сервер ставится в локальную сеть; Красивый интерфейс; Красивые смайлики; Передача файлов. Минусы: Сервер только для Windows; Передача файлов только для онлайн пользователей, т.е. если я отправляю файл тому, кто сейчас не в сети, то когда он придёт, файл этот уже не получит. Всё бы ничего, но передача файлов работает далеко не всегда. Даже при отключенных антивирусе с фаерволом на обеих сторонах — возникают ошибки передачи. Из-за этого пришлось отказаться от него. MyChat Плюсы: Сервер…
Setcookie не работает
Добрый день! Вот решил поделиться своим открытием насчёт функции Setcookie в PHP. При генерации страницы мне нужно чтобы у клиента установился определённое значение в cookie. Поковырявшись с Setcookie и убедившись что оно не работает, я обычно бросал это неблагодарное дело и пользовался JavaScript`ом, однако если у клиента отключены скрипты, то такой фокус не прокатит. Так почему же Setcookie не работает? В основном это две причины: очевидная и не очень. Очевидная причина: Как пишут нам в инструкции cookie должны передаваться до того как будут выведены какие-либо другие данные скрипта (это ограничение протокола). Это значит, что в скрипте вызовы этой функции должны располагаться прежде остального вывода, включая вывод тэгов <html> и <head>, а также пустые строки и пробельные символы. Да, это очень важное замечание, поскольку, проигнорировав его, вы получите сообщение об ошибке следующего содержания: Cannot modify header information — headers already sent by (output started at… Типа невозможно изменить заголовки страницы, так…
Яндекс, что ты делаешь?! Прекрати!!!
В конце мая 2016 года на этом сайте я решил заменить счётчик посещений от Lifeinternet на Яндекс Метрику. Причиной стал перевод сайта на https, а Lifeinternet его не поддерживает. Зарегистрировался, вставил JavaScript-код на сайт и начал радоваться отображению результатов: Дааа, это поинтереснее чем стандартная статистика WordPress! Тут тебе и: Доля новых/старых посетителей Источник трафика (с поисковиков, прямые заходы, внутренние переходы и т.д) Глубина просмотра Время на сайте Устройство, с которого происходил просмотр И даже примерный возраст аудитории! (тут наверно как-то проходит связь с социальными сетями, иначе как ещё определить возраст.. хммм, молодцы!) Так я жил и радовался пока не решил, спустя полгода, полазить по менюшкам яндекс-метрики, где обнаружил много интересного, занятного, а порой и пугающего! (О_о) Поехали: Пункт меню Отчеты Какой-то прям колоссальный набор отчётов: Посещаемость, конверсии График переходов с сайтов, поисковых систем, поисковым фразам. Я даже нашел конкретных людей, кто оставил пост Вконтакте про мои статьи!!! Возраст, пол, интересы…
Криптопро поместить сертификат в реестр
Чтобы поместить сертификат КриптоПРО с флешки в реестр, нужно зайти в КриптоПро CSP -> вкладка Сервис: Нажать кнопку Скопировать. В открывшемся окне выбрать ключевой контейнер, нажав на кнопку Обзор… Вводим PIN-код от этого контейнера, нажимаем OK Придумываем имя нового контейнера, вводим его и жмём OK Выбираем Реестр, затем OK Устанавливаем пароль на новый контейнер Нажимаем OK и закрываем окно КриптоПро. Теперь нужно добавить сертификат в Континент-АП, для чего жмём правой кнопкой на значок в трее и выбираем Установить сертификат пользователя Выбираем только что созданный ключевой контейнер Вводим пароль от него На следующий вопрос отвечаем Да, автоматически, если не получится, то вручную указываем файл root.p7b