Почему я могу использовать ReverseStringComparator.class в качестве значения аннотации @SortedComparator, если он не явлJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему я могу использовать ReverseStringComparator.class в качестве значения аннотации @SortedComparator, если он не явл

Сообщение Anonymous »

Код: Выделить всё

@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// other fields

@ElementCollection
@CollectionTable(name = "studentImages")
@MapKeyColumn(name = "file_name")
@SortComparator(reverseSort.getClass()) // Error: Attribute value must be a constant
@Column(name = "img_desc")
private Map images = new TreeMap();

private static Comparator reverseSort = Comparator.reverseOrder();
}
Для указанной выше ошибки я сослался на эти сообщения:
  • Избавьтесь от «Значение атрибута аннотации» должно быть сообщением с постоянным выражением» [дубликат]
  • Как передать значение аннотации из константного java
Они указывают, что значение аннотации должно быть константой времени компиляции, а константа времени компиляции может быть только примитивом или строкой. Но указанную выше ошибку можно устранить, определив внутренний класс следующим образом:

Код: Выделить всё

@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// other fields

@ElementCollection
@CollectionTable(name = "studentImages")
@MapKeyColumn(name = "file_name")
@SortComparator(ReverseStringComparator.class) // Is this a compile time constant?
@Column(name = "img_desc")
private Map images = new TreeMap();

private class ReverseStringComparator implements Comparator {
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
}
}
Почему я могу использовать ReverseStringComparator.class в качестве значения аннотации @SortedComparator, если она не является примитивом или строкой?
Также , есть ли другой способ, кроме определения и использования здесь внутреннего класса (с использованием @SortComparator)?

Подробнее здесь: https://stackoverflow.com/questions/792 ... e-sortedco
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»