Zhang895341748 2024-08-06 16:44 采纳率: 0%
浏览 37

为什么@Data 和 @Getter @Setter 会导致结果完全不同

为什么@Data @Getter @Setter 会导致结果完全不同

写法一:
@AllArgsConstructor
@Data
public class User {

    private String name;

}

public static void main(String[] args) {
        User u1=new User("abc");
        User u2=new User("abc");

        System.out.println(u1 == u2);
        System.out.println(u1.equals(u2));

        Set<User> s1=new HashSet<>();
        s1.add(u1);
        s1.add(u2);
        System.out.println(s1.size());
        System.out.println(u1.hashCode()+"\t"+u2.hashCode());
    }

**执行结果**
false
true
1
96413    96413

写法二:

@AllArgsConstructor
@Getter
@Setter
public class User {

    private String name;

}

public static void main(String[] args) {
        User u1=new User("abc");
        User u2=new User("abc");

        System.out.println(u1 == u2);
        System.out.println(u1.equals(u2));

        Set<User> s1=new HashSet<>();
        s1.add(u1);
        s1.add(u2);
        System.out.println(s1.size());
        System.out.println(u1.hashCode()+"\t"+u2.hashCode());
    }

**执行结果:**
false
false
2
783286238    1500056228
  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 创建了问题 8月6日