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

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。