• alibaba--java规范


    18. 【推荐】final 可以声明类、成员变量、方法、以及本地变量,下列情况使用 final 关键字:

    1) 不允许被继承的类,如:String 类。

    2) 不允许修改引用的域对象,如:POJO 类的域变量。

    3) 不允许被重写的方法,如:POJO 类的 setter 方法。

    4) 不允许运行过程中重新赋值的局部变量。

    5) 避免上下文重复使用一个变量,使用 final 描述可以强制重新定义一个变量,方便更好 地进行重构。

    19. 【推荐】慎用 Object 的 clone 方法来拷贝对象。 说

    明:对象的 clone 方法默认是浅拷贝,若想实现深拷贝需要重写 clone 方法实现属性对象 的拷贝。

    20. 【推荐】类成员与方法访问控制从严:

    1) 如果不允许外部直接通过 new 来创建对象,那么构造方法必须是 private。

    2) 工具类不允许有 public 或 default 构造方法。

    3) 类非 static 成员变量并且与子类共享,必须是 protected。

    4) 类非 static 成员变量并且仅在本类使用,必须是 private。

    5) 类 static 成员变量如果仅在本类使用,必须是 private。 

    6) 若是 static 成员变量,必须考虑是否为 final。

    7) 类成员方法只供类内部调用,必须是 private。

    8) 类成员方法只对继承类公开,那么限制为 protected。

    说明:任何类、方法、参数、变量,严控访问范围。过于宽泛的访问范围,不利于模块解耦。 思考:如果是一个 private 的方法,想删除就删除,可是一个 public 的 service 方法,或者 一个 public 的成员变量,删除一下,不得手心冒点汗吗?变量像自己的小孩,尽量在自己的 视线内,变量作用域太大,无限制的到处跑,那么你会担心的。

    4. 【强制】使用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全 一样的数组,大小就是 list.size()。

    说明:使用 toArray 带参方法,入参分配的数组空间不够大时,toArray 方法内部将重新分配 内存空间,并返回新数组地址;

    如果数组元素大于实际所需,下标为[ list.size() ]的数组 元素将被置为 null,其它数组元素保持原值,因此最好将方法入参数组大小定义与集合元素 个数一致。

    正例:

    List list = new ArrayList(2);

    list.add("guan");

    list.add("bao");

    String[] array = new String[list.size()];

    array = list.toArray(array);

    反例:

    直接使用 toArray 无参方法存在问题,此方法返回值只能是 Object[]类,若强转其它 类型数组将出现 ClassCastException 错误。

    5. 【强制】使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方 法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。

    说明:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。Arrays.asList 体现的是适配器模式,只是转换接口,后台的数据仍是数组。

    String[] str = new String[] { "you", "wu" };

    List list = Arrays.asList(str);

    第一种情况:list.add("yangguanbao"); 运行时异常。

    第二种情况:str[0] = "gujin"; 那么 list.get(0)也会随之修改。

  • 相关阅读:
    正则表达式入门(3)
    正则表达式入门(2)
    正则表达式入门
    函数的参数传递
    python常用库之random
    插入排序与归并排序
    浅拷贝与深拷贝
    装饰器学习小程序
    Python的“is”与“==”
    Oracle中断中止exp/imp和expdp/impdp数据库导入导出
  • 原文地址:https://www.cnblogs.com/yunqing/p/7804496.html
Copyright © 2020-2023  润新知