HashMap от объекта. Как получить значение поля объекта?

Есть класс WebController в нём объявлена коллекция private ConcurrentHashMap<String, User> users = new ConcurrentHashMap<>();

Где User это класс со следующими полями:

public class User {
    private String userName;
    private String email;
    private String password;
}

Допустим я положил в коллекцию users.put(Alesha, new User(Alesha, [email protected], 12345));

Как мне из коллекции users теперь вытащить эмайл , т.е. второе поле?

В конечном итоге мне необходимо делать проверку, т.е. я буду получать значение с формы и это значение мне надо сравнить с полем private String email в коллекции users;

Распечатать мапу целиком я могу, а вот как взять отдельное значение Email, не понимаю( System.out.println("Печатаем мапу " + Arrays.asList(users));


Ответы (2 шт):

Автор решения: Roman Konoval

Элемент из Map-ы по ключу можно достать с помощью метода get, это даст объект типа User. Дальше из него нужно достать поле email.

 User user = users.get("Alesha");
 String userEmail = user.getEmail();

Чтоб это работало нужно, чтобы в классе User был опеределен getter для поля email:

class User {

    private String userName;
    private String email;
    private String password;

    public String getEmail() {
       return email;
    }

    ...
}
→ Ссылка
Автор решения: Имя Фамилия

С помощью рефлексии:

User alesha = users.get("Alesha");
Field field = User.class.getDeclaredField("email");
field.setAccessible(true);
String email = field.get(alesha);
→ Ссылка