何为Escape, 类的成员变量理应不暴露给其他对象,但是却因为某些公有函数暴露出去了,这样就叫做Escape。
接下来列举一些例子:
1.
class UnsafeStates {
private String[] states = new String[] {
"AK", "AL" ...
};
public String[] getStates() { return states; }
}
2. 把内部类EventListener通过方法registerListener传给了source对象。source可能会在registerListener方法中通过内部类EventListener拿到ThisEscape的地址,并进行操作,这个时候就可能会有错误,因为这个时候ThisEscape还没有完全实例化。
public class ThisEscape {
public ThisEscape(EventSource source) {
source.registerListener(
new EventListener() {
public void onEvent(Event e) {
doSomething(e);
}
});
}
}
第二种情况的解决方法:用一个工程方法代替私有的构造函数。
public class SafeListener {
private final EventListener listener;
private SafeListener() {
listener = new EventListener() {
public void onEvent(Event e) {
doSomething(e);
}
};
}
public static SafeListener newInstance(EventSource source) {
SafeListener safe = new SafeListener();
source.registerListener(safe.listener);
return safe;
}
}
分享到:
相关推荐
本笔记将深入探讨《Java Concurrency In Practice》这本书中的核心概念,结合Guava库的实际使用案例,帮助读者理解并掌握Java并发编程的精髓。 首先,我们来了解Java并发的基础知识。Java提供了丰富的并发工具类,...
《Java Concurrency in Practice》中文版笔记
Addison.Wesley.Java.Concurrency.in.Practice.May.2006.chm Agile Java 测试驱动开发的编程技术.pdf Java 8 默认方法和多继承.docx Java NIO通信框架在电信领域的实践.docx java.png javaconcurrencyinpractice.pdf...
Concurrency in Practice 读书笔记和示例代码 包括 线程基础/同步sync/并发concurrent/容器/线程池 示例代码 JUC容器的源码解析 Synchronized 同步容器 Concurrent 并发容器: Map/List/Queue 阻塞队列 JUC锁: ...
并发编程实战》阅读笔记 有关 Java 并发编程~ 别急别急,在重写它啦~,会补充一些新的内容进去,预计 2020/02 完成。 Content Java 并发编程基础 保证线程安全的两个角度 构造安全的并发应用程序 Java 并发高级主题 ...
书籍如《Effective Java》、《Java Concurrency in Practice》和《Head First Java》等,都是学习Java高级编程的经典之作。在线资源如Oracle的Java Tutorials和Stack Overflow上的问答,为解决实际问题提供了大量...
Addison.Wesley.Java.Concurrency.in.Practice.May.2006.chm Agile Java 测试驱动开发的编程技术.pdf Java 8 默认方法和多继承.docx Java NIO通信框架在电信领域的实践.docx java.png javaconcurrencyinpractice.pdf...
【Java并发编程实战】的阅读笔记-英文版:Java Concurrency in Practice官网源代码地址: : 1.主要是对源代码作一些补充并能实际运行一下(以junit的方式)2.添加了java8newfeatures,主要是写了几个java8的新...
Java Concurrency in Practice 对象的共享 对象的组合 基础构建模块 JavaGC监控与优化 垃圾回收机制 垃圾回收机制的监控 优化垃圾回收机制 Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响 JavaEE 浅析...
- **书籍**:《Effective Java》、《Java Concurrency in Practice》、《Clean Code: A Handbook of Agile Software Craftsmanship》等经典书籍深入讲解Java编程技巧和最佳实践。 - **社区与论坛**:Stack Overflow...