说,我想创建一个名为富在Java中新的类,它有2个成员变量,INT酒吧和双温,我想给这个类的equals方法是比较该类的两个实例并返回一个布尔值。我有两个Foo实例,f1和f2。假设是正确定义构造函数中,很多人会告诉我这样做:实现良好的equals方法
public boolean equals(Foo f2)
{
return (bar == f2.getBar() &&
temp == f2.getTemp());
}
在哪里检查平等,你会做
f1.equals(f2);
不过,我敢肯定我见过有些人这样做,而不是:
public static boolean equals(Foo f1, Foo f2)
{
return (f1.getBar() == f2.getBar() &&
f1.getTemp() == f2.getTemp());
}
在哪里检查平等,你会做
Foo.equals(f1, f2);
我的问题是,既然我看到两种实现,哪一种被认为是更好的编程风格?
这不是一个很好的问题,因为它在征求意见。如果两者都起作用,那么它们都不是“更好”,但Java朗语惯例显然是第一个。重要的是你满足[合同](http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object))。 – ChiefTwoPencils