java 核心技术-12版 卷Ⅰ- 4.7.1 记录 record
有时,记录就只是数据,而面向对象程序设计提供的数据隐藏有些碍事。考虑一个类Point ,这个类描述平面上的一个点,有x和y 坐标。
当然,可以如下创建一个类
这里隐藏了x和y ,然后通过获取方法来获得这些值,不过,这种做法对我们确实有好处吗?
我们将来想改变Point的实现吗? 当然,还有极坐标,不过对于图形API ,你可能不会使用极坐标。在实际中,平面上的一个点就用x 和y 坐标来描述。
为了更简洁地定义这些类,JDK 14 引入了一个预览特性:“记录”(record)。最终版本在JDK 16 中发布。
记录(record)是一种特殊形式的类,其状态不可变,而且公共可读。可以如下将Point 定义为一个记录:
record Point(double x ,double y){}
其结果是有一下实例字段的类
private final double x;
private final double y;
在Java语言规范中,一个记录的实例字段称为组件(component)。
这个类有一个构造器
Point(double x,double y)
和以下访问器方法
public double x()
public double y()
注意,访问器方法名为 x 和 y ,而不是getX 和 getY。(Java中实例字段可以与方法同名,这是合法的。)
var p = new Point(3,4);
System.out.println(p.x() + \” \” + p.y());
注释:Java没有遵循get 的约定,因为那有些麻烦。对于布尔字段,通常使用is 而不是get。而且首字母大写可能有问题。如果一个类既有x字段又有X字段,会发生什么?有些程序员不太满意,因为他们原来的类不能轻松地变为记录。不过实际上,那些遗留类中,很多都是可变的,所以并不适合转为记录。
除了字段访问器方法,每个记录有3个自动定义的方法:toString 、equals 和 hashCode 。下一章会更多地了解这些方法。
警告:对于这些自动提供的方法,也可以定义你自己的版本,只要它们有相同的参数和返回类型。例如,下面的定义就是合法的:
record Point(double x,double y){
public double x() {
return y; // Bad 语法允许,但实际开发中非常不推荐
}
}
可以为一个记录增加你自己的方法:
与所有其他类一样,记录可以有静态字段和方法:
不过,不能为记录增加实力字段:
record Point(double x ,double y){
private double r ;// ERROR
}
警告:记录的实例字段自动为final 手段。不过,它们可能是可变对象的引用。
record PointInTime(double x, double y, Date when){}
这样的实例将是可变的;
var pt = new PointInTime(0 ,0 , new Date());
p.when().setTime(0);
如果希望记录实例是不可变的,那么字段就不能使用可变的类型。
提示: 对于完全由一组变量表示的不可变数据,要使用记录而不是类。如果数据是可变的,或者数据表示可能随时间改变,则使用类。记录更易读、更高效,而且在并发程序中更安全。
Android 开发知识体系
### 开发干货集锦,总有你知道,以及不知道的内容!
本文主要包含以下几大内容
>一、Android 基础学习
>二、Android Framework 学习
>三、Android 面试题集
>四、学习书籍参考
# 一、Android 基础学习
## 1. 四大组件与布局资源系列
– [Activity 使用详解](https://mp.weixin.qq.com/s/EhmN_5oUBww71dynTWIuyQ)
– [Service 使用详解](https://mp.weixin.qq.com/s/KErwF7fE2CZ7m4TP9CGChA)
– [Broadcast 使用详解](https://mp.weixin.qq.com/s/V6oMrlrt0UD2VEkagA-Ohw)
– [ContentProvider 使用详解](https://mp.weixin.qq.com/s/dZITITmGHuk1hBCqaAfR6g)
– [四大布局 使用详解](https://mp.weixin.qq.com/s/Q-eCQCAZEudlQ3P-ixd7Hg)
– [Resource 使用详解](https://mp.weixin.qq.com/s/8NlzUF-eJRBP5NNZFaoFSA)
– [Drawable与 Bitmap 转换总结](https://mp.weixin.qq.com/s/FkoJy16MzrkE_720AfEDKw)
– [Drawable 使用详解](https://mp.weixin.qq.com/s/sAnm_0CpL6m2yDADKkpy_g)
## 2. 基础View系列
– [TextView 使用详解](https://mp.weixin.qq.com/s/3jucGmaV89Lb4ksN4yu9VA)
– [EditText 使用详解](https://mp.weixin.qq.com/s/t0QwUxoM66eDUtrXY-4mIg)
– [Button 使用详解](https://mp.weixin.qq.com/s/KgaWbRPG9-P91vcfLWa3Mg)
– [ImageView 使用详解](https://mp.weixin.qq.com/s/m5kvbcokVglgzW_zlOhbuQ)
– [Dialog 使用详解](https://mp.weixin.qq.com/s/zfSjEq1igIw4u_2TTv1MEg)
– [Notification 使用详解](https://mp.weixin.qq.com/s/yj21a0bz7yF_mp5cWjzQQA)
– Recyclerview 使用详解
– [ListView 使用详解](https://mp.weixin.qq.com/s/bpHgwiPaT1meUsvE3hMGew)
– [GridView 使用详解](https://mp.weixin.qq.com/s/gP0JU_n__QxIM0aCHpT-bA)
– [Fragment 使用详解](https://mp.weixin.qq.com/s/EDREMOPXs5OV5QD0vb4OaQ)
– [PopupWindow 使用详解](https://mp.weixin.qq.com/s/2zCcbEC1dqgsZa2bq2lbdA)
– Radio Button 单选按钮
– Toggle Button 开关控件
– Spinner 下拉弹窗
– Pickers 时间与日期控件
– ShortCuts 快捷图标
– App Widgets 小部件
– Bubbles 气泡悬浮控件
– Toasts 小提示
– menu 菜单
– Search 搜索控件
– Floating Action Button 悬浮按钮
– 动画
– WebView
– App Bar
– Recents Screen 最近任务列表
– Multi-window 分屏支持
– 控制 SystemUI 部分功能
– Swipe-to-refresh下拉刷新
## 3. 基础知识系列
– [Permission 使用详解](https://mp.weixin.qq.com/s/V_2xo-S7H0vd3LfzX3apiQ)
– [Intent 常用方法总结](https://mp.weixin.qq.com/s/L511c-5GRayuPNAWXWvmgg)
– [Handler 使用详解](https://mp.weixin.qq.com/s/B5AQBuvNa6ix4i5n6bhxOw)
– [SharePerference 使用详解](https://mp.weixin.qq.com/s/oXEagqMowQdC3MV2i6KWCQ)
– [Preference 使用详解](https://mp.weixin.qq.com/s/fUEywB65CE5qYGDEdVr8wQ)
– [SQLite 使用详解](https://mp.weixin.qq.com/s/5shUtm31K_y2_EVMeXTzmA)
– [内部存储 使用详解](https://mp.weixin.qq.com/s/QD6LNa4pD_G0ncuugJqZYw)
– [外部存储 使用详解](https://mp.weixin.qq.com/s/x8-565x0Mq2SHUylylaO-w)
– [Android 设备信息获取](https://mp.weixin.qq.com/s/l5E-hAJ70XXBqUN9oDybnw)
– [Android 设备兼容性详解](https://mp.weixin.qq.com/s/GV7Vdioj5L2b5tgCBQwD6w)
– Tasks 与 back stack
– 进程与app生命周期
– Parcelables 与 Bundles数据操作
– 复制粘贴实现
– Navigation 导航
– 多线程管理
– 构造可折叠屏设备
– Camera X
– Camera
– Sensors
– Bluetooth
– NFC
– Telecom
– Wi-Fi
– USB
– VPN
– Touch && input
– Location
– Awake 管理
– Material Design
– Styles 与Themes
## 4. 自定义View系列知识
– [自定义ItemToggleView](https://mp.weixin.qq.com/s/4m7qyE6oZfPw4PWXb325sg)
– [自定义itemCheckView](https://mp.weixin.qq.com/s/HKoIJCGuQz8YQbU4oE708w)
– [自定义itemClickView](https://mp.weixin.qq.com/s/mkVx523Ybl3Pf2PPtLEykQ)
– [自定义仿 IPhone 开关控件](https://mp.weixin.qq.com/s/tzW8QOhPYcqjfL6-GlrNeQ)
– [自定义 EditText 样式](https://mp.weixin.qq.com/s/a0NLFUZ9LyaJegRw0wDbXw)
– [自定义 Button 选择器](https://mp.weixin.qq.com/s/FLptFYj1_0QPMspOz_vlDg)
– [自定义CheckBox样式](https://mp.weixin.qq.com/s/AWg-TcS_Udb-ILtuYqFsEA)
# 二、Android Framework 学习
## 1. Framework基础知识
– [Android 架构大剖析](https://mp.weixin.qq.com/s/LPBLD_uveg0V9Vif-U4fpA)
– [Camera 学习概览](https://mp.weixin.qq.com/s/DP8V_m2LDvn8XNbiVkrecg)
– [Camera HAL 系统介绍](https://mp.weixin.qq.com/s/BtTAdpdooNLYctjZa2U5mg)
– [Camera HAL 3 & HAL 1](https://mp.weixin.qq.com/s/PAFGLRC-cTQtkRVMlKiPaw)
– [Camera 多摄知多少](https://mp.weixin.qq.com/s/kBRvLSsHwObQRNHp8Ec7Yw)
– [Camera元数据与3A模式](https://mp.weixin.qq.com/s/BEaTCVHDN7JH8YkS-UIw0A)
## 2. Framework 源码学习系列知识
– [Android 9.0 init 启动流程](https://mp.weixin.qq.com/s/gsRCPMrPMBz8NJie-gTAsw)
– [Android 9.0 Zygote 启动流程](https://mp.weixin.qq.com/s/cbCm3YIDaYu7TXY8Ch6aFA)
– [Android 9.0 SystemServer 启动流程](https://mp.weixin.qq.com/s/gGQub7Tg2B9SnfDFUIVdXA)
– InstallerService
– DeviceIdentifiersPolicyService
– [ActivityManagerService 学习笔记](https://mp.weixin.qq.com/s/K9jpiLdcwHm5VjyZ7fDpVg)
– [PowerManagerService](https://mp.weixin.qq.com/s/3fl6Zu2X-27BgEGlvf6fIQ)
– RecoverySystemService
– LightsService
– [DisplayManagerService](https://mp.weixin.qq.com/s/dpZA089kFpM2MN9j252k3Q)
– RegionalizationService
– [PackageManagerService](https://mp.weixin.qq.com/s/DeJ9phYUjcrcbFcXK28Rqw)
– UserManagerService
– OverlayManagerService
– [BatteryService](https://mp.weixin.qq.com/s/P4VzRxxvj0NPvhVjuiA6ZQ)
– UsageStatsService
– WebViewUpdateService
– BinderCallsStatsService
– [PhoneWindowsManager](https://mp.weixin.qq.com/s/RXV_vqMXaCVzZIoG_sQV4A)
– [ShutdownThread](https://mp.weixin.qq.com/s/CF-YdaHYVlqPs2JjPbkPhQ)
## 3. 系统稳定性系列知识
– [深入理解 Android 9.0 Crash 机制(一)](https://mp.weixin.qq.com/s/5p-0WzfFd26qWFBFbd2JxA)
– [深入理解 Android 9.0 Crash 机制(二)](https://mp.weixin.qq.com/s/0cp6QnTvS36E1Dg9xMjTWA)
– [App Crash 详解](https://mp.weixin.qq.com/s/zThLUoWzkbda5rC1ikQcEQ)
– [App ANR 详解](https://mp.weixin.qq.com/s/_mpKJ-wOJ02AkmXgoPeGkg)
– [App Crash 案例分析](https://mp.weixin.qq.com/s/BkRLq6Q9kZoyZseaqK3S5w)
– [Google APK Crash 解决方案](https://mp.weixin.qq.com/s/383FNerBJlFTArcd8zv3aQ)
– [Google APK ANR 解决方案](https://mp.weixin.qq.com/s/k09ihvFsYBTx6GMIh9-3jQ)
– [Kernel Exception 问题分析](https://mp.weixin.qq.com/s/77XZVkIhZkrsu7UUcBn0cA)
– [SWT 手机重启问题分析指南](https://mp.weixin.qq.com/s/KNtqdcuNfWrA-UnqNH4A1Q)
– [SWT 重启案例分析(一)](https://mp.weixin.qq.com/s/hVHFss82ADe7aZydHHb01A)
– [SWT 重启案例分析(二)](https://mp.weixin.qq.com/s/QCtsXgipvGmRYjq3uaAVjA)
– [SWT 重启案例分析(三)](https://mp.weixin.qq.com/s/dKHSNXWSIycc2sYGboWDOw)
– [SWT 重启案例分析(四)](https://mp.weixin.qq.com/s/BrgAFeFddz4F6KdQtoSAmw)
– [SWT 重启案例分析(五)](https://mp.weixin.qq.com/s/ylfOZL6qsubWcbkkrIt3rg)
– [展讯平台手机重启问题分析](https://mp.weixin.qq.com/s/T1f310OFqf3PaxK1bx49hw)
– [MTK平台手机重启问题分析](https://mp.weixin.qq.com/s/dv-9wzVDQBAZ93l-sdqv0Q)
– [手机开关机、重启时间优化方案](https://mp.weixin.qq.com/s/5SWnYBE0gHw-xqx9heOHxg)
– [Android 开机Logo、铃声、震动修改方案](https://mp.weixin.qq.com/s/g8nWHsHIL_qolNHznJ2M3w)
– [Android 开机问题分析流程](https://mp.weixin.qq.com/s/ZfqE16loxX7L598_YMFuIg)
– [开关机那些事儿](https://mp.weixin.qq.com/s/jSiZc42j4pqpmTWDlDwetQ)
##4 . 性优化系列知识
– [Android 性能优化总览](https://mp.weixin.qq.com/s/TH-cl-5n9XOlgYmQ8OZUlA)
– [性能优化之 卡顿延迟](https://mp.weixin.qq.com/s/lnym7JDo3_iNrPVzVrw7dQ)
– [性能优化之 WiFi Scan](https://mp.weixin.qq.com/s/NAe6NNiZvc1iAf6Y34PiPQ)
– [性能优化之 Wakeups](https://mp.weixin.qq.com/s/Mr9Zidx_FWJTVKjqMsGg6A)
– [性能优化之 Wake Locks](https://mp.weixin.qq.com/s/qw3PoG2gBXPGvIazNer7hw)
– [性能优化之Partial Wake Locks](https://mp.weixin.qq.com/s/rcvj6R5Z8q4IOPamlgC_Vg)
# 三、Android 面试题集
– [Android 面试 100 题](https://mp.weixin.qq.com/s/Qvv_zcnMlSRuUC74q9QfrA)
– [2019Android多线程面试总结](https://mp.weixin.qq.com/s/sQP_koO8Fztq6_q_BmZ7mQ)
– [Android中高级面试33题](https://mp.weixin.qq.com/s/ade1IMWA8NNFulDvJhuRSA)
– [Android面试常问基础25题](https://mp.weixin.qq.com/s/1GTLlZ5_YiqZHVw_rlh7cw)
– [2019 Java常见面试43题](https://mp.weixin.qq.com/s/TpkAHjodPKHZCtkuI-E65A)
– [Java深入源码级面试题](https://mp.weixin.qq.com/s/cLJ8UEfhdJTle5ksrqwBWw)
– [2019 网络编程面试题](https://mp.weixin.qq.com/s/r_pQhehmTNJLWBmAKn86YA)
– [线程、多线程和线程池面试专题](https://mp.weixin.qq.com/s/bdrjtkteaQiPYN89z47-kg)
# 四、学习书籍参考
支持购买正版书籍,以下pdf 数据均来自网络,如有侵权,请联系小编删除,谢谢!
学习让生活更美好,小安时刻为您的学习服务着。
**关注微信公众号:程序员Android
回复暗码`(比如:Android高薪之路 回复暗码 6601 即可 )`,即可获取PDF 书籍**
## 1. Android 开发书籍
书籍名称|获取暗码
—-|—-
Android高薪之路|6601
疯狂Android讲义|6602
第一行代码Android第2版|6603
Android进阶之光|6604
深入理解Android卷一|6605
深入理解Android卷二|6606
深入理解Android卷三|6607
Android 4.0网络编程详解|6608
大话企业级Android应用开发实战|6609
Android Launcher应用开发|6610
Android编程权威指南第2版|6611
Android开发艺术探索|6612
Android框架揭秘|6613
Android内核剖析|6614
Android和PHP开发最佳实践|6615
Android多媒体开发高级编程|6616
Android程序设计基础|6617
Android软件安全与逆向分析|6618
Android游戏编程之从零开始|6619
## 2. Java 开发书籍
书籍名称|获取暗码
—-|—-
Java 异常处理 测试与调试|7701
Java编程规范(第三版)|7702
Java编程思想中文第4版|7703
Java并发编程实践|7704
Java核心技术卷一|7705
JAVA解惑|7706
Java数据结构和算法|7707
Java性能权威指南|7708
分布式Java应用基础与实践|7709
深入理解Java虚拟机JVM高级特性与最佳实践|7710
## 3.JavaScript 开发书籍
书籍名称|获取暗码
—-|—-
JavaScript_DOM编程艺术|8801
JavaScript高级程序设计|8802
JavaScript权威指南|8803
JavaScript设计模式|8804
JavaScript语言精粹|8805
JavaScript语言精髓与编程实践|8806
jQuery基础教程|8807
JQUERY权威指南|8808
编写高质量代码 改善JavaScript程序的188个建议|8809
高性能JavaScript|8810
## 4.Linux 开发书籍
书籍名称|获取暗码
—-|—-
ARM_Linux内核源码剖析|9901
Linux程序设计第四版中文|9902
Linux命令行与shell脚本编程大全|9903
Linux内核设计与实现|9904
Linux系统编程|9905
UNIX 环境高级编程|9906
Unix_Linux编程实践教程|9907
鸟哥的Linux私房菜|9908
嵌入式Linux应用程序开发详解|9909
深入Linux内核架构|9910
深入理解linux内核第三版|9911
## 5.其他书籍
书籍名称|获取暗码
—-|—-
阿里工程师的自我修养|5501
阿里Java开发手册|5502
华为绩效管理之道|5503
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。