Я столкнулся с простой проблемой, наивно пытаясь сделать это:
public void someMethod(){
int x = 0;
...
@SuppressWarnings({"rawtypes", "unchecked"})
x = ((Comparable)lhs).compareTo(rhs);
...
}
Это незаконно и должно быть перефразировано для компиляции:
public void someMethod(){
...
@SuppressWarnings({"rawtypes", "unchecked"})
int x = ((Comparable)lhs).compareTo(rhs);
...
}
Я проследил проблему до ElementType: оператор не является допустимым элементом программы. Это довольно запутанно — я думал, что операторы — это что-то вроде супертипа всех элементов программирования.
Есть ли теоретическая или техническая причина для ограничения действительных элементов?
Можно ли это сделать по-другому, т.е. предположим, что я мог бы заменить ElementType
своим собственным классом и освоить плавные изменения, мог бы я аннотировать какое-либо утверждение?