Я работаю над собственной библиотекой структур данных, просто для практики. У меня есть файл JAR, содержащий основные компоненты и классы, которые управляют всей структурой каждой реализации. По сути, чтобы создать новую структуру данных, вам необходимо расширить AbstractDataEngine. После этого вам необходимо пометить его @Implementation и @EngineBehaviour, если он не является абстрактным.
Например:
Код: Выделить всё
Implementation(ImplementationType.IMPLEMENTATION)
@EngineNature(nature = Nature.IMMUTABLE, behaviour = EngineBehaviour.FIXED_LENGTH, order = Ordering.UNSUPPORTED)
public class ImmutableList extends FixedArrayList{
....
}
Если реализация является НЕИЗМЕННОЙ, обработчик аннотаций для @Implementation фактически сгенерирует за вас весь шаблонный код. Это делается путем проверки методов, отмеченных @Behaviour. Если это MUTABLE, генерируется шаблонное исключение, в противном случае, если оно отмечено IMMUTABLE или UNSUPPORTED, то ничего не генерируется. Моя проблема в том, что процессор явно не может получить доступ к объектам класса. Я использую Javassist для генерации кода.
Единственное, о чем я мог подумать, это использование различных ClassLoaders, но это не сработало. .
Подробнее здесь:
https://stackoverflow.com/questions/786 ... find-class