为什么@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