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 шт):
Элемент из 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);