Effective Java 英文 第二版 读书笔记 Item 13:Minimize the accessibility of classes and members...

访问修饰符的可见域

• private—The member is accessible only from the top-level class where it is declared.
• package-private—The member is accessible from any class in the package
where it is declared. Technically known as default access, this is the access level
you get if no access modifier is specified.
• protected—The member is accessible from subclasses of the class where it is
declared (subject to a few restrictions [JLS, 6.6.2]) and from any class in the
package where it is declared.
• public—The member is accessible from anywhere.

 

Instance fields should never be public ,so classes with public mutable fields are not thread-safe

it is wrong for a class
to have a public static final array field, or an accessor that returns such a
field. If a class has such a field or accessor, clients will be able to modify the contents
of the array. This is a frequent source of security holes:
// Potential security hole!
public static final Thing[] VALUES = { ... };

 

Beware of the fact that many IDEs generate accessors that return references to private
array fields, resulting in exactly this problem. There are two ways to fix the
problem. You can make the public array private and add a public immutable list:

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

转载于:https://www.cnblogs.com/linkarl/p/5643697.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值