使用 .equals() 比较枚举值替换被比较的字符串

Comparing enum values using .equals() replaces the string being compared

我有两个 classes:主 classes 和用户 classes。 主要 class 我希望打印出所有女性用户。但是,当我进行比较时,它也将其他用户的所有性别都替换为女性

这是用户class

package com.user;

public class User {

    String name;
    static Gender gender;
    
    enum Gender{
        MALE,FEMALE
    }

    public User(String name, Gender gender) {
        super();
        this.name = name;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public static Gender getGender() {
        return gender;
    }

    public static void setGender(Gender gender) {
        User.gender = gender;
    }

    @Override
    public String toString() {
        return String.format("User [name= %s, gender= %s]", name,gender.toString());
    }
}

主要class

public class Main {
    public static void main(String[] args) {
    List<User> users = new ArrayList<User>();
            
             {
                users.add(new User("Eva",Gender.FEMALE));
                users.add(new User("Mike", Gender.MALE));
                users.add(new User("Dave", Gender.MALE));
                users.add(new User("Alice", Gender.FEMALE));
            }
            
             users.stream()
                .filter(user -> Gender.FEMALE.equals(User.gender))
                .collect(Collectors.toList())
                .forEach(System.out::println);
        }
}

请问我哪里错了?

您在 User class 中将 gender 声明为静态成员。

编辑:

为了让您的解决方案更清晰,并结合其他贡献者在评论中写的内容:

public class User {

    String name;
    Gender gender;

然后

public class Main {
    public static void main(String[] args) {
    List<User> users = new ArrayList<User>();
            
         {
            users.add(new User("Eva",Gender.FEMALE));
            users.add(new User("Mike", Gender.MALE));
            users.add(new User("Dave", Gender.MALE));
            users.add(new User("Alice", Gender.FEMALE));
        }
        
         users.stream()
            .filter(user -> Gender.FEMALE.equals(user.gender)) // user not User
            .collect(Collectors.toList())
            .forEach(System.out::println);
        }
}