Tagged with tips

Получение всех Java классов из ClassPath

Уже не первый раз наталкиваюсь на достаточно общую задачу: найти все классы в classpath приложения. Каждый раз гуглю, пишу код, а потом он где-то теряется. Поэтому, выкладываю код своего решения, может быть кому-нибудь пригодится. А если не пригодится напрямую, здесь видно как читать Jar-файлы))) Короче, говоря, гугл рассудит) Краткое описание подхода, чтобы лучше понимался код:

  • Разделяем строку classpath на записи, ссылающиеся на конкретные директории и jar-файлы. В линуксе разделитель между ними - двоеточие, в винде - точка с запятой. Дальше, для каждой записи:
  • Если запись ссылается на директорию - рекурсивно сканируем ее, считая директорию, откуда начали сканирование соответствующей корневому пакету.
  • Если запись ссылается на файл, пытаемся анализировать его как Jar-файл, используя инструментарий из пакета java.util.jar
Чтобы использовать нижеприведенный класс необходимо получить саму строку classpath. Это осуществляется простым вызовом System.getProperty ("java.class.path")

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

Абстракция хранилища данных в J2ME

В процессе написания небольшой програмки для мобильного телефона столкнулся с тем, что работа c файловой системой (JSR-75) поддерживается не на всех телефонах. А данные надо же где-то хранить. Потому я решил реализовать поддержку записи данных как в файловую систему, так и в RecordStore

Но при этом различные объекты пишут данные по разному, поэтому в голову пришла следующая абстракция:

  • Все объекты, которые могут быть сохранены, реализуют интерфейс Storable
  • Имеется абстрактное хранилище данных, от которого наследуются реализации для файлов и для RecordStore. Это же абстрактное хранилище умеет само выбирать реализацию и выдавать ее по запросу.

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

Переменное число аргументов в Java: конструкция "..."

Недавно случайно обнаружил, что в Java существует возможность красиво реализовать переменное число аргументов у метода. Красиво, это значит без всяких new Object[]{}, которые жутко засоряют код и совсем не способствуют его читабельности. Красивое решение: конструкция "...", которая была добавлена в Java SE 5.

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