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();
}

时间: 2024-10-30 00:18:26

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

Effective Java 英文 第二版 读书笔记 Item 7:Avoid finalizers

Finalizers are unpredictable,often dangerous,and generally unnecessary. Their use can cause erratic behavior,poor performance,and portability problems. Finalizers have a few valid uses,which we’ll cover later in this item,but as a rule of thumb,you s

Effective Java 英文 第二版 读书笔记 Item 5:Avoid creating unnecessary objects.

It is often appropriate to reuse a single object instead of creating a new functionally equivalent object each time it is needed.Reuse can be both faster and more stylish.An object can always be reused if it is immutable. String s=new String(“no”); 

Effective Java 英文 第二版 读书笔记 Item 3:Enforce the singleton property with a private constructor or an enum type.

Making a class a singleton can make it difficult to test clients. package singletonProperty; //ingleton with public final field public class ElvisField { public static final ElvisField INSTANCE=new ElvisField(); private ElvisField(){ } } package sing

Effective Java 英文 第二版 读书笔记 Item 2:Consider a builder when faced with many constructor parameters.

package builderManyPara; //JavaBeans Pattern - allows inconsistency,mandates mutability public class NutritionFactsBean { // Parameters initialized to default values(if any) // required private int servingSize = -1; private int servings = -1; // opti

Effective Java 英文 第二版 读书笔记 Item 11:Override clone judiciously

x.clone()!=x will be true x.clone().getClass()==x.getClass() will be true x.clone().equals(x) always true. 意味着深复制,新建对象,数据与结构与原对象一致, Copying an object will typically entail creating a new instance of tis class,but it may require copying of internal da

Effective Java 英文 第二版 读书笔记 Item 10:Always override toString

for example,[email protected]  class [email protected]+unsigned hexadecimal representation of hashcode. define: a concise but informative representation that is easy for a person to read providing a good toString implementation makes your class much

Effective Java 英文 第二版 读书笔记 Item 4:Attempting to enforce noninstantiability by making a class abstract does not work.

The class can be subclassed and the subclass instantiated.Futhermore,it misleads the user into thinking the class was designed for inheritance(继承). There is,however,a simple idiom to ensure noninstantiability.A default constructor is generated only i

实习第16天 开新坑 Effective Java 英文 第二版 读书笔记

最近每天上班下班有点时间看下 Effective Java. 我一般看看原文,在看看示例代码,再想想原文的意思. 我英文也不是很好,所以决定中文英文随便用. Creating and destroying objects Item 1: Consider static factory methods instead of constructors Advantage of static factory methods 1.Unlike constructors. They have names.

《Effective Java中文版第二版》读书笔记

说明 这里是阅读<Effective Java中文版第二版>的读书笔记,这里会记录一些个人感觉稍微有些重要的内容,方便以后查阅,可能会因为个人实力原因导致理解有误,若有发现欢迎指出.一些个人还不理解的会用斜线标注. 第一章是引言,所以跳过. 第二章 创建和销毁对象 第1条:考虑用静态工厂方法代替构造器 含义 静态工厂方法是指一个返回类的实例的静态方法,例如: public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE :