RxJava2.0中DisposableHelper的enum用==
来源:互联网 发布:暖通常用数据 编辑:程序博客网 时间:2024/04/30 23:28
引言
最近在看RxJava2.0, 学习里面代码细节实现,以补充自己在java细节上的不足. 在DisposableHelper.java中有
public static boolean isDisposed(Disposable d) {
return d == DISPOSED;
}
这里用”==”有点意思. 因为这样他不是比较 enum 的 value 的. 而是 对象的内存地址.
Java里的“==”比较的是地址
可以查看http://www.cnblogs.com/PopShow/p/5206504.html
另外enum的equals也是相当于”==”. 不过最好还是用”==”比较好, 这样就知道他比较的是地址了.
在rxjava2.0里有很多isDisposed()
代码. 他的实现是
@Override
public boolean isDisposed() {
//这里的get()是AtomicReference<Disposable>的,
//所以他get()的是Disposable类
return DisposableHelper.isDisposed(get());
}
而我在单步debug的时候发现他get()
的Disposable明明是”DISPOSED”, 可是调用DisposableHelper.isDisposed(d)
的时候却返回false. 如下图:
从图中看到要比较的d是一个CreateEmitter
对象, 所以他们肯定不是在同一个内存地址的, 故返回false.
所以DisposableHelper.isDisposed(d)
要返回true, 那么这个d就必须只能为DisposableHelper.DISPOSED
这个对象.
mark一下.
- RxJava2.0中DisposableHelper的enum用==
- RxJava2.0的使用
- RxJava2.0的创建
- RxJava2.0的使用-1
- RxJava2.0的使用-2
- RxJava2.0的使用-3
- 到来的Rxjava2.0<一>
- RxJava2.0的使用详解
- RxJava2.0的使用代码
- RxJava2.0的使用详解
- RxJava2.0的使用详解
- RxJava2.0 给初学者的RxJava2.0教程
- Android中rxjava2的基本使用
- RxJava2使用过程中遇到的坑
- 纯笔记--适应rxjava2.0中
- Rxjava2.0
- RxJava2.0
- RxJava2.0的生动形象的分析
- numpy入门——矩阵计算
- C语言三种预处理功能详解
- [WebGIS项目](零)引言
- 基于图像的人数统计方法
- JavaScript单线程和异步机制
- RxJava2.0中DisposableHelper的enum用==
- Android 热修复的知识总结
- 单例模式
- 面试常问的购物车原理
- 《机器学习算法原理与编程实践》笔记——写在黔行在云间之后
- 程序员的 “坏” 习惯:试一试
- hibernate的运行原理:
- 如何提高微信电商的转化率?神器来了!
- hduoj【1257】最少拦截系统(LIS详解)