Не уверен, что «set» делает в строке кода Java

#java

#java

Вопрос:

Что set означает в этой строке кода?

 List<SimpleGrantedAuthority> authorities = set = new ArrayList<>();
 

Я пытался выяснить, что это значит, но пока безуспешно.

Комментарии:

1. Есть ли у вас где-нибудь определенный набор?

2. В Java вы можете выполнять несколько назначений одновременно, например a = b = c = 5; , я предполагаю, что set это List<SimpleGrantedAuthority> то, что определено в другом месте.

3. Существует ли ArrayList set , объявленный ранее в коде?

Ответ №1:

По сути, это цепное присвоение. a = b принимает значение b , и = является правильным ассоциативным, поэтому код эквивалентен:

 List<SimpleGrantedAuthority> authorities = (set = new ArrayList<>());
 

что эквивалентно:

 set = new ArrayList<>();
List<SimpleGrantedAuthority> authorities = set;
 

Обратите внимание, что для того, чтобы это сработало, set оно должно быть предварительно объявлено с правильным типом.

Комментарии:

1. Другой способ сказать это заключается в том, что оператор присваивания имеет возвращаемое значение, а именно присвоенное значение.

2. Хотя я полностью согласен с ответом, я должен сказать, что называть ArrayList as set в Java — это садизм.