栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使类和成员的可访问性最小化——《effective Java》第三版

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使类和成员的可访问性最小化——《effective Java》第三版

      对于成员(域、方法、嵌套类和嵌套接口)有四种可能的访问级别,下面按照可访问性的递增顺序罗列出来:
      私有的(private)——只有在声明该成员的顶层类内部才可以访问这个成员。
      包级私有的(package-private)——声明该成员的包内部的任何类都可以访问这个成员。从技术上讲,它被称为“缺省”(default)访问级别,如果没有为成员指定访问修饰符,就采用这个访问级别(当然,接口成员除外,它们默认的访问级别是公有的)。
      受保护的(protected)——声明该成员的类的子类可以访问这个成员(但有一些限制,并且声明该成员的包内部的任何类也可以访问这个成员。
       公有的(public)——在任何地方都可以访问该成员。

       注意,长度非零的数组总是可变的,所以让类具有公有的静态 final 数组域,或者返回这种域的访问方法,这是错误的。如果类具有这样的域或者访问方法,客户端将能够修改数组中的内容。这是安全漏洞的一个常见根源:

// Potential security hole!
public static final Thing[] VALUES ={ ... };


       要注意,许多 IDE 产生的访问方法会返回指向私有数组域的引用,正好导致了这个
问题。修正这个问题有两种方法。可以使公有数组变成私有的,并增加一个公有的不可变
列表:
 

private static final Thing[] PRIVATE_VALUES ={... };
public static final List VALUES =
Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES));


     另一种方法是,也可以使数组变成私有的,并添加一个公有方法,它返回私有数组的
一个拷贝:
 

private static final Thing[] PRIVATE_VALUES ={ ... };
public static final Thing[] values( ){
日
return PRIVATE_VALUES.c1one();

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号