1:是考虑用static 来代替构造方法,通过私有构造器强化不可实例化的能力
public class test{
pirvate test(){
throw new AssertionError();
}
}
一般可用在工具类里面一般可都是static,
2:避免创建不必要的对像
String s=new String("sql");
改进后的版本可以:String s="sql";
重写:
public boolean equals (Object o){
if(o==this){
return true;
}if(!(0 instanceof Test)){
return false;
}
Test ts=(Test)o;
return ts.id=id&&ts.name=name;
}
pubilc int hashcode(){
int result=17;
result=31*result+id //如果是int类型直接int,如果是long .intval(),如果是float 计算Float.floatToIntBits(id),如果是double直接转换成:Double.doubleToLongbits(id);String 直接化成int类型。
boolean 计算(f?1:0)
}
分享到:
相关推荐
Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.
2. **hashCode方法**:当覆写`equals`时,必须同时覆写`hashCode`,以保持哈希表的正确性。 3. **toString方法**:为每个类提供一个有意义的字符串表示,方便调试和日志记录。 4. **clone方法**:`clone`方法的覆写...
通过提供getter和setter方法(访问方法),我们可以控制对对象状态的访问和修改,增加逻辑验证,甚至改变域的实现而不影响调用者。此外,访问方法还可以提供额外的功能,如缓存计算结果、记录日志等。这种设计模式也...
《Effective Java》是Java开发领域的经典著作,作者Joshua Bloch深入浅出地阐述了编写高效、健壮的Java代码的技巧和最佳实践。以下是对该书部分内容的详细解释: 1. **产生和销毁对象** - Item1:静态工厂方法相比...
6. **重写equals()和hashCode()方法(Overriding equals() and hashCode())**: 代码展示了如何正确实现这两个方法以遵循合同,尤其是在实现集合类时的注意事项。 7. **接口与抽象类(Interfaces vs Abstract ...
7. **重写equals()和hashCode()**:遵循`equals()`和`hashCode()`合同,确保一致性并避免常见的陷阱,如不考虑null值。 8. **异常处理**:提倡使用受检异常(checked exceptions)和非受检异常(unchecked ...
2. **重写equals()和hashCode()**:Bloch建议当重写equals()方法时,也应同时重写hashCode(),以确保对象在散列结构(如HashSet或HashMap)中的行为正确。 3. **枚举代替常量类**:书中推荐使用枚举类型替代传统的...
注意equals()和hashCode()的一致性原则。 12. **优先考虑异常安全的函数**:设计函数时,应尽量避免在正常路径上抛出异常,避免"空指针异常"等常见错误。 13. **多态优于条件表达式**:通过多态实现代码的扩展性和...
Joshua Bloch 所著《Effective Java 第二版》一书摘要这是我对 Joshua Bloch 所著《Effective Java 第 2 版》的总结。我在学习时会用到它,也可以作为快速参考。它并不是这本书的独立替代品,所以如果你真的想学习...
25. **使用Objects类的静态方法**:Objects类提供了一些有用的静态方法,如equals()、requireNonNull()和hashCode(),它们可以简化代码并提高安全性。 26. **使用钻石操作符简化匿名内部类的构造**:Java 7引入的...
枚举提供更好的类型安全,防止非法值的创建,并且可以添加方法和实现接口。 2. **避免使用原始类型数组**:推荐使用泛型集合,如ArrayList或LinkedList,而不是原始类型的数组,因为泛型集合提供了更强的类型检查和...
4. **equals()与hashCode()**:遵循 equals 和 hashCode 的合同,当两个对象相等时,它们的hashCode值必须相同。同时,如果两个对象不相等,则它们的hashCode值应尽可能不同,以优化哈希表性能。 5. **泛型**:使用...
7. **利用final、static和private修饰符优化类和方法**:这些修饰符可以提升性能,例如,static方法不会隐式地持有对调用它的对象的引用,因此可以被JVM优化。 8. **避免过度使用final**:虽然final可以增加代码的...
10. **避免在`equals()`方法中调用`this.getClass()`或`instanceof`(Item 8)**:这样会导致不正确的比较结果,应该重写`equals()`和`hashCode()`方法,确保一致性。 11. **使用`String`构造函数创建字符串,而...
在"EffectiveJava-master"压缩包中,你可能会找到对这些主题的实现示例,包括源代码、测试案例和其他辅助文件。通过研究这些示例,开发者可以更深入地理解和应用《EffectiveJava》中的原则和最佳实践,提升自己的...
1. **重写equals()与hashCode()**:当创建一个类,特别是实现了Comparable或实现了可哈希的类时,应始终重写equals()和hashCode()方法。这两个方法的正确实现是保证类在集合中正确工作的基础。 2. **避免使用原始...
2. **设计和实现equals()和hashCode()**:在Java中,重写equals()和hashCode()方法是确保对象正确比较的关键。书中建议遵循“相等的对象必须具有相同的哈希码”原则,并提供了实现这两个方法的模板。 3. **泛型**:...