Блог

При сериализации автоматически не сериализуются: — transient переменные — static переменные — унаследованные переменные (они будут инициализированы с помощью конструктора родительского класса без параметров). Все это можно разными способами сериализовать врукопашную (externalizable). Для сериализации объектов внутренних нестатических классов, внешние классы должны быть сериализуемыми. Да, чтобы немного дополнить алгоритм стандартной сериализации/десериализации, используют два метода: [cc lang=»java»] public class B extends A implements Serializable { private String nameB; private void writeObject(ObjectOutputStream oos) throws Exception{ oos.defaultWriteObject(); oos.writeObject(nameA); } private void readObject(ObjectInputStream ois) throws Exception{ ois.defaultReadObject(); nameA = (String) ois.readObject(); } public B(String nameA, String nameB) { super(nameA); this.nameA += nameA; this.nameB = nameB; } } [/cc]

[cc lang=»java»] MyClass.class.getPackage().getName() [/cc]

[cc lang=»java»] Class c = person.getClass(); Method[] methods = c.getDeclaredMethods(); //Получаем массив объявленных методов класса person try { methods[0].invoke(person, null); //Выполняем первый попавшийся метод } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } [/cc] Более подробно расписано здесь (http://java-online.ru/java-reflection.xhtml). Вызов метода с параметрами: [cc lang=»java»] Class 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); [/cc] Метод invoke принимает два параметра : первый — это объект, класс которого объявляет или наследует данный метод, а второй — массив значений параметров, которые передаются вызываемому методу.

В общем виде это выглядет так (http://java-online.ru/java-reflection.xhtml): [cc lang=»java»] Class aclass = Class.forName(«Test»); Object obj = aclass.newInstance(); Test test = (Test) obj; [/cc] Пример: файл Person.java с объявлением интерфейса, в котором содержатся классы: [cc lang=»java»] package 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»); } } } [/cc] фрагмент файла Solution.java, находящийся в том же пакете: [cc lang=»java»] try{ Class c = Class.forName(«com.javarush.task.task14.task1411.Person$User»); Person person = (Person)c.newInstance(); } catch (Exception | NoClassDefFoundError e){ System.out.println(e); } [/cc] Замечу, что если в строке 2 вместо $User будет $user (ошибка в регистре), то будет брошен NoClassDefFoundError.

http://java-online.ru/java-reflection.xhtml

[cc lang=»java»] try{ ///Something } catch (Exception | NoClassDefFoundError e){ System.out.println(e); } [/cc] Здесь в одном блоке Catch мы отлавливаем исключения двух типов. Замечу, что NoClassDefFoundError не является наследником класса Exception.

[cc lang=»java»] public static String firstUpperCase(String string){ if (string == null || string.isEmpty()) return «»; return string.substring(0, 1).toUpperCase() + string.substring(1).toLowerCase(); } [/cc]

Второй раз встречаюсь с ситуацией, решил написать здесь. Симптомы: Не прикрепляются файлы к письмам на Яндекс почте На некоторых компьютерах очень тугой интернет, не открываются некоторые файлы. Причём на других компьютерах может быть нормально. Перед этим: Аварийное отключение питания компьютера с 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 в PHP. При генерации страницы мне нужно чтобы у клиента установился определённое значение в cookie. Поковырявшись с Setcookie и убедившись что оно не работает, я обычно бросал это неблагодарное дело и пользовался JavaScript`ом, однако если у клиента отключены скрипты, то такой фокус не прокатит. Так почему же Setcookie не работает? В основном это две причины: очевидная и не очень. Очевидная причина: Как пишут нам в инструкции cookie должны передаваться до того как будут выведены какие-либо другие данные скрипта (это ограничение протокола). Это значит, что в скрипте вызовы этой функции должны располагаться прежде остального вывода, включая вывод тэгов <html> и <head>, а также пустые строки и пробельные символы. Да, это очень важное замечание, поскольку, проигнорировав его, вы получите сообщение об ошибке следующего содержания: Cannot modify header information — headers already sent by (output started at… Типа невозможно изменить заголовки страницы, так…

Читать дальше

60/135