Android中常用的注解

序列化和反序列化

序列化是指将对象转换为字节序列的过程,以便于存储或传输。在序列化过程中,对象的状态信息将被转换为字节流,可以保存到文件中或通过网络传输给其他计算机。反序列化则是将字节序列恢复为对象的过程。

gson解析

Gson是Google提供的一个Java库,用于将Java对象转换为JSON字符串,或将JSON字符串转换为Java对象。它可以通过注解来定制序列化和反序列化过程,以满足特定的需求。

gson中的注解

@SerializedName:用于指定字段序列化时的名称,即映射数据字段的key。

java 复制代码
 @SerializedName("hvac_state")
    private Integer hvacState;

@Expose:用于标记字段或方法是否参与序列化和反序列化。serialize:序列化,deserialize:反序列化,默认值都为true

java 复制代码
    //可以序列化,不可以反序列化
    @Expose(serialize = true, deserialize = false)
   private String name2;

@Since和@Until:用于标记字段或方法在特定版本范围内是否参与序列化和反序列化。@Since:从某个版本开始生效,@Until:到某个特定版本之前生效。

java 复制代码
@Since(2.1) 
private int model;

@Until(1.9)
private String type;

@JsonAdapter:可以自定义序列化和反序列化。继承自TypeAdapter。

java 复制代码
public class CarTypeAdapter extends TypeAdapter<Car> {
...
}

@JsonAdapter(CarTypeAdapter.class)
public class Car{
...
}

androidx的注解

Android系统提供的SDK中,有四个原生注解。位于android.annotation包中:

@TargetApi 使高版本API的代码在低版本SDK不报错。

@SuppressLint 使用此标注让Lint忽略指定的警告。

@Nullable 变量、参数或返回值可以为空

@NonNull 变量、参数或返回值不能为空

java 复制代码
@Retention(SOURCE) // 只保留在源文件中,编译期间删除
@Target({METHOD, PARAMETER, FIELD}) // 此注解使用范围:方法,参数,字段
public @interface NonNull { // 声明注解
}

Java注解

@Override // 重写方法

@Deprecated // 废弃方法

@SuppressWarnings // 关闭不当的编译器警告信息, 常用的有:

▪ @SuppressWarnings("unused") // 去除单类型告警

▪ @SuppressWarnings("unused", "unchecked") // 去除多类型告警

▪ @SuppressWarnings("all") // 去除全部类型告警


其他常见的注解可以参考这篇文章 Android常用注解一览

参考链接

相关推荐
蒸鱼Yuzheng8 小时前
设备端性能工件可靠导出:断点续传、哈希、manifest 与失败恢复
android·自动化测试·python·adb·数据完整性
美狐美颜sdk10 小时前
直播APP接入美颜SDK后出现卡顿怎么办?从性能瓶颈寻找解决方案
android·人工智能·音视频·美颜sdk·直播美颜sdk
美狐美颜SDK开放平台10 小时前
直播APP开发实战:从摄像头调用到视频美颜sdk集成
android·人工智能·计算机视觉·音视频·直播美颜sdk
alexhilton11 小时前
生命周期感知的多模块启动模式
android·kotlin·android jetpack
三少爷的鞋12 小时前
Android 架构指南:suspend 如何响应取消?别再给 Repository 加 `cancel()`
android
迪飞特科技13 小时前
【无标题】
android·人工智能·本地化大模型
FlightYe13 小时前
视界原理之2D视频(二):视频文件里有什么
android·linux·网络·c++·ffmpeg·音视频·aac
传奇开心果编程13 小时前
【Flutter入门练中学】第8课:动画与过渡
android·学习·flutter·ui·ios
传奇开心果编程15 小时前
【Flutter入门练中学】第11课:状态管理进阶与声明式路由
android·学习·flutter·ui·ios
JasonSJX16 小时前
四端自建播放器怎么落地:Android、iOS、tvOS、Tizen 的 DRM 播放 SDK 技术盘点
android·ios·音视频·视频防录屏·加密保护课程·直播安全