EffectiveJava_12-05-2018

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zy1104560031/article/details/84818224

40、谨慎设计方法的签名

1、谨慎地选择方法的名称。

2、不要过于追求提供便利的方法,每个方法应该尽其所能。

3、避免过长的参数列表

        1.把方法分解成多个

        2.创建辅助类,用来保存参数的分组

        3.Builder模式

41、慎用重载

import java.math.BigInteger;
import java.util.*;
public class CollectionClassifier {
    public static String classify(Set<?> s){
        return "set";
    }
    public static String classify(List<?> list){
        return "list";
    }
    public static String classify(Collection<?> collection){
        return "Unknow collection";
    }
    public static void main(String[] args) {
        Collection<?>[] collections = {
                new HashSet<String>(),
                new ArrayList<BigInteger>(),
                new HashMap<String,String>().values()
        };
        for (Collection collection:collections) {
            System.out.println(classify(collection));
        }
    }
}

output:

Unknow collection
Unknow collection
Unknow collection

classify方法被重载了,而要调用哪个重载方法是在编译时决定的。

扫描二维码关注公众号,回复: 4640774 查看本文章

对于重载方法的选择是静态的,而对于被覆盖方法的选择是动态的。

42、慎用可变参数

43、返回零长度的数组或者集合,而不是NULL

44、为所有导出的API元素编写文档注释

45、将局部变量的作用于最小化

可以增强代码的可读性和可维护性,降低代码出错的可能性。

46、for-each优先于for循环

Arrays.asList的用法:

使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportOperationException异常
说明:asList的返回对象是一个Arrays内部类,并没有实现集合的修改方法。Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍是数组。

47、了解和使用类库

48、如果需要精确的答案,请避免使用float,double。

49、基本类型优于装箱基本类型

基本类型:int,double,引用类型(String,List)。

每个基本类型都有一个对应的引用类型,乘坐装箱基本类型,如Integer,Double,Boolean。

区别:

一:基本类型只有值,而装箱基本类型则具有与它们的值不同的同一性。

二:基本类型只有功能完备的值,二每个装箱基本类型除了它对应基本类型的所有功能值之外,还有个非功能值:null。

三:基本类型更节省时间和空间。、

50、如果其他类型更合适,则尽量避免使用字符串。

51、当心字符串连接的性能

52、通过接口引用对象

如果有合适的接口类型存在,那么对于参数,返回值,变量和域来说,就都应该使用接口类型进行声明。

域:所谓的域,翻译成英文就是field, 也就是我们常说的字段,或者说是属性。 比如类的字段(属性),局部的,全局的。所谓域,其实是“field”的翻译

实例域:
比如:
class A{
public static void main(String[] args)
{
A a = new A();
//a是个实例,那么这个实例的作用域就是“实例域"
}
}

然后实例域,就是 实例("object" )的"field"。包括实例域和静态域,静态域又叫类域。

只有当你利用构造器创建某个对象的时候,才真正需要引用这个对象的类。

如果你养成了用接口作为类型的习惯,你的程序将会更加灵活。当你决定更换实现时,所要做的就只是改变构造器中的类的名称。

53、接口优先于反射机制。

核心反射机制(java.lang.reflect),提供了“通过程序来访问关于已装载的类的信息”的能力。

54、谨慎的使用本地方法

55、谨慎地进行优化

56、遵守普遍接受的命名惯例

猜你喜欢

转载自blog.csdn.net/zy1104560031/article/details/84818224