private static Collection<Annotation> getSelectableAnnotations() { AnnotationFactory factory = DefaultAnnotationFactory.getInstance(); List<Annotation> annotations = new ArrayList<Annotation>(); annotations.addAll(factory.getSubclassInstances(StringAnnotation.class)); annotations.add(factory.ofClass(Charge.class)); // display name order Collections.sort( annotations, new Comparator<Annotation>() { @Override public int compare(Annotation o1, Annotation o2) { return name(o1).compareTo(name(o2)); } private String name(Annotation a) { return a.getBrief() != null ? a.getBrief() : a.getClass().getSimpleName(); } }); // displayed as: -- select annotation -- annotations.add(0, null); return annotations; }