Мой профессор предложил этот фрагмент кода в упражнении о масштабах и сроке службы:
class AnonymousInnerClassInMethod {
public static void main(String[] args) {
int local = 1;
Comparable compare = new Comparable () {
public int compareTo(Object value) {
return (Integer)value - local;
}
};
System.out.println(compare.compareTo(5));
}
}
Если оставить в стороне тот факт, что local
недоступен (это упражнение) и что Comparable не параметризован (недосмотр?) ... Я никогда не видел эту конструкцию и понятия не имел, что это вообще возможно.
- Сделано ли это таким образом, чтобы избежать расширения Comparable на весь класс?
- Если да, то почему? Это намного проще / читабельнее / что-то еще?
- Можно ли написать анонимный класс этого типа для любого интерфейса?