На сколько я понимаю проблему — вам достаточно одной аннотации, типа:
public @interface ClassReference {
Class<?>[] values();
}
Тогда можно связать один класс с N классами:
1. Если в values указан 1 класс и у этого класса стоит «обратная» аннотация на этот класс — 1 к 1
2. Если в values указано N классов и у них у всех «обратная» аннотация на этот класс — 1 к N
3. Если в values указано N классов и у них в свою очередь указаны связки к другим классам — N к M
PS Если это не решение, то уточните вопрос.