用support annotation替代enum

从源码仓库到编辑器智能,SAP ui5-language-assistant 的定位与使用场景 该GitHub仓库是一个面向SAPUI5/OpenUI5开发的工具链monorepo,主要包含VS Code语言服务扩展(UI5 Language Assistant),提供XML视图的智能补全、语义校验和快速修复功能。其核心价值在于将UI5框架的运行时语义(如控件继承关系、聚合类型检查、绑定语法验证等)提前嵌入开发阶段,显著降低XML视图的编写错误率。特别支持Fiori Elements场景,能识别building blocks的注解路径关联,为混合使用标准模板与自定义扩展的开发模式提供关键辅助。该工具通 阅读详情

一次演讲中听到android中使用enum可能会造成很大的性能问题。开始我是怀疑的。为什么怀疑?因为我在好几个地方用到了枚举类型。再去查看过谷歌的API,enum的直接子类也有好多,比如:

Allocation.MipmapControl,
Authenticator.RequestorType,
AvoidXfermode.Mode,
Bitmap.CompressFormat,
Bitmap.Config, BlurMaskFilter.Blur,
Canvas.EdgeType,
Canvas.VertexMode,
ClientInfoStatus,
ConsoleMessage.MessageLevel,
CursorJoiner.Result,
and 48 others.

简单看了下,Android还是有好多地方使用了。那为什么还不建议使用呢?查了一番,看到google官方有一段关于enum使用的介绍。既然使用不当可能会导致性能问题,那我们怎么办呢?

这里介绍下Support包中的annotation,使用 @IntDef 和 @StringDef 来达到我们枚举的效果。由于@IntDef 的介绍比较多,这里给个@StringDef 的Demo:

public class MyClient {
    public static final String ONE = "one";
    public static final String RECORD = "record";
    public static final String STATUS = "status";

    @StringDef({ONE, RECORD, STATUS})
    public @interface Client {
    }

    private String mClient;

    public MyClient(@Client String client) {
        mClient = client;
    }
    ...
}

这样,在外面创建MyClient对象的时候,构造方法中传入的参数就必须为 ONE, RECORD, STATUS 其中之一,从而达到类似enum的效果。


参考:

  1. https://noobcoderblog.wordpress.com/2015/04/12/java-enum-and-android-intdefstringdef-annotation/
  2. The price of ENUMs
  3. http://tools.android.com/tech-docs/support-annotations
  4. http://developer.android.com/reference/java/lang/Enum.html
  5. http://stackoverflow.com/questions/29183904/should-i-strictly-avoid-using-enums-on-android
SAP UI5 没有 NgModule,但有自己的装配秩序 Angular的NgModule和SAP UI5的组件模型在设计理念上有明显差异。Angular通过NgModule集中管理组件声明、依赖注入和模块导入导出,采用编译时作用域控制;而UI5则将这些功能分散在Component.js、manifest.json、模块加载器和XML视图等不同层面,更依赖运行时机制。关键差异体现在:1) UI5没有与declarations对应的集中式组件注册,而是通过模块路径和命名空间解析;2) 依赖注入在UI5中主要通过模块加载(sap.ui.define)和应用组件实现,而 阅读详情

相关推荐

v7包解决importandroid.support.annotation.RequiresApi

v7包解决importandroid.support.annotation.RequiresApi

【java高级】枚举Enum、泛型Generic、注解Annotation、单元测试Junit

【java高级】枚举Enum、泛型Generic、注解Annotation、单元测试Junit【枚举Enum】【泛型Generic】【注解Annotation】【单元测试Junit】知识图谱 【枚举Enum】 使用 类的对象是有限个,确定的。如:日期月份等 当需要定义一组常量时,建议枚举 JDK1.5之前,自定义枚举 JDK1.5之后,enum关键字定义枚举 属性应为不允许被改变,故private final修饰,构造器中赋值, 自定义枚举 1.私有化类的构造器,保证不在外部创建对象 2.在类内部创建枚

A-Itfuture的博客 580

基于Transformer的CFD代理模型:AeroTransformer原理、实现与优化

计算流体动力学(CFD)仿真是航空航天、汽车工程等领域的关键技术,但其高计算成本限制了设计优化效率。代理模型通过机器学习方法学习输入参数与流场输出间的映射关系,能实现秒级预测,大幅加速仿真流程。Transformer架构凭借其全局注意力机制,能有效建模流场中的长程物理关联,克服了传统卷积神经网络在捕捉全局依赖上的局限。通过预训练与微调策略,模型能先在大规模多样化数据集上学习通用流体规律,再针对特定任务快速适配,显著提升了小样本下的泛化能力与工程实用价值。AeroTransformer项目正是这一技术路线的典

weixin_33509203的博客 360

java annotation enum_Java-枚举类与注解

一、枚举类1.枚举类的使用●类的对象只有有限个,确定的。举例如下:➢星期: Monday(星期- )、... Sunday(星 期天)➢性别: Man(男)、 Woman(女)➢季节: Spring(春 7节....Winer(冬天)➢支付方式: Cash (现金)、WeChatPay (微信)、Alipay(支付宝)、 BankCard(银行卡) CreditCard(信用卡)➢就职状态: Bu...

weixin_35976825的博客 624

SCL3400硬件避坑指南:引脚兼容性测试+模式切换异常处理

本文针对村田SCL3400双轴倾角计在实际硬件设计中的常见问题,提供了详细的避坑指南。重点解析了从SCL3300迁移时的引脚兼容性真相,包括SPI时序、电源去耦等关键差异,并深入探讨了模式切换中超量程错误的复现原因与软件容错方案。同时,指导了如何根据应用场景配置低通滤波器,并给出了无自动唤醒功能下的可靠电源与长线SPI通信管理策略。

weixin_29190573的博客 293

手把手教你用BQ Studio给BQ40Z50电量计“做体检”:从Golden Learning到精度验证的全流程实操

本文详细介绍了如何使用BQ Studio对BQ40Z50电量计进行全流程调试,从Golden Learning到精度验证。通过硬件连接、参数配置和优化技巧,帮助工程师提升电池管理系统的精度和性能,适用于BMS开发和电量计校准的实际应用场景。

weixin_30824599的博客 452

Annotation & Enum :Java中注解和枚举的使用

Java从5.0推出了很多新的东西,其中包含了标题所示两大利器。现在开始分别介绍一下: 【Annotation】 注解,用于为一些信息添加额外解释信息时使用,类似元数据的概念,用于描述数据的数据。这个东西在设计基础性框架的时候非常有用,你可以通过定义一些注解,让应用层程序员能够将自己的代码嵌入并运行在你的框架中。当没有Annotation的时候,框架通常需要应用层开发人员写配置文件,有了这个,

DrifterJ's Stash 1万+

AD5700 HART芯片实战笔记:从时钟检测到数据收发,一个STM32工程师的踩坑实录

本文详细记录了STM32工程师在AD5700 HART芯片开发中的实战经验,涵盖时钟信号检测、RTS切换时序优化及HART数据解析等关键问题。通过硬件设计检查、定时器配置优化和大小端转换方案对比,解决了工业级芯片开发中的典型挑战,为嵌入式开发者提供宝贵参考。

weixin_42715608的博客 164

六、枚举类与注解(Enum、Annotation)

一、枚举类      在没有枚举类型时定义常量常见的方式如下: public class DayDemo { public static final int MONDAY =1; public static final int TUESDAY=2; public static final int WEDNESDAY=3; public static final int THURSDAY=4; public s

陈大大的博客 613

告别零散脚本:用Playwright+Pytest+Yaml+Allure搭建可维护的UI自动化项目

UI自动化测试是软件质量保障的关键环节,其核心在于模拟用户操作,对Web应用界面进行功能验证。传统的脚本堆砌方式常因代码耦合度高、维护成本大而难以为继。工程化解决方案通过分离关注点,将测试逻辑、数据和配置解耦,从而显著提升项目的可读性、可维护性和可扩展性。其技术价值在于构建可持续运行的自动化资产,而非一次性脚本。典型的应用场景包括Web应用的回归测试、兼容性测试及CI/CD流水线中的质量门禁。本文以Playwright、Pytest、Yaml和Allure为核心技术栈,详细阐述了如何从项目架构、页面对象模型

weixin_42529328的博客 302

Android面试必考问题:Android性能优化最全面试题及参考答案(8万字长文)

Android 中的 OOM(Out Of Memory,内存溢出)异常是指应用程序在运行过程中,由于申请的内存空间超过了系统所能提供的最大内存限制而导致的错误。在 Android 中,内存泄漏是指应用中的某些对象在不再被使用后,仍然被其他对象持有引用,导致这些对象无法被垃圾回收器回收,从而占用内存空间,随着时间的推移可能会导致应用内存不足,甚至崩溃。在一次开发 Android 应用的过程中,我发现应用在长时间运行后会出现内存占用过高的情况,导致应用变得卡顿,甚至可能会被系统强制关闭。

大模型大数据攻城狮的专栏 2534

Effective Java:善于使用枚举(enum)和注解(annotation)

Effective Java enum annotation 枚举 注解

qq_35066345的博客 2345

网格质量评价

CFD中评价网格质量的方法

B_etter_Man的博客 1万+

support-annotations @IntDef的使用(替代枚举)

1. 枚举利弊以及枚举倒底占多少内存 注:此部分内容转自Android是否推荐使用枚举(enum)?使用枚举的利弊以及枚举倒底占多少内存? 在此感谢分享 1.1 安卓中是否推荐使用枚举enum Android 官方建议: Android官网不建议使用enums,占用内存多(Enums often require more than twice as much memory as stati...

.天天向上. 343

华为数通方向HCIP-DataCom H12-831题库(多选题:121-140)

华为数通HCIP H12-831多选题

didiplus 1291

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android 种使用@intdef 代替 枚举

Android 种的枚举 Enum 1. Enum 枚举类型,用于事先定义一些值,和可以说将某种类型限定范围,在写代码或编译时用于查错。 用枚举类型作为参数,可以将参数值限定在一定范围之内,避免不必要的错误。 2. 枚举类型被编译后,枚举常量会占用更多的内存,增加IO的开销,系统给每个APP的内存是有默认上限的,虽然随着硬件的发展这个内存越来越大,但是,我们app也会随之增加更复杂的功能。...

a10321032的博客 419

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

10个常见Android库的ProGuard配置技巧:android-proguard-snippets实战教程

想要为Android应用进行代码混淆,却总是遇到各种库的兼容性问题?ProGuard配置是Android开发中必不可少的一环,但面对众多第三方库时,配置起来往往令人头疼。android-proguard-snippets项目为你提供了完整的解决方案,这个开源项目收集了超过70个常见Android库的ProGuard配置片段,让你的混淆配置变得简单高效。 ## 为什么需要专门的ProGuard配置

gitblog_00078的博客 254

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

@Data is only supported on a class.

今天在写一个enum类时,我想调用其中的变量的getter方法于是在开头写了@Data,结果报错显示 Error:(6, 1) java: @Data is only supported on a class. 查看发现@Data只能写在class中,无法写在enum上,于是我们在开头写上@Getter就行了...

qq_33689013的博客 3247

【Codex】Part 5 — What Tools Does Codex Support?

模型负责判断下一步,工具负责读取真实状态或执行操作。工具能力以当前会话实际暴露的列表为准。本章依据 2026 年 7 月 27 日的 Codex 官方手册核验,并用的帮助信息与 feature 列表复查。工具名称、实验性功能和 MCP 配置会随版本与产品表面变化;使用前应查看当前会话的工具列表、/mcp和官方配置参考。

bryant_meng 539

SpringBoot实现多数据源配置

SpringBoot实现多数据源配置

北执南念的博客 3324

解决Java项目体积问题:proguard-maven-plugin高级配置技巧

proguard-maven-plugin是一款强大的Maven插件,专为Java项目提供模块化ProGuard打包支持,能有效减小项目体积并保护代码。本文将分享其高级配置技巧,助你轻松优化Java项目。 ## 🌟 核心功能与优势 proguard-maven-plugin通过混淆、优化和压缩等手段,显著减小Java项目体积。它支持模块化配置,可根据不同需求灵活调整,让项目更轻量、更安全。

gitblog_01107的博客 567

别再乱写proguard-rules.pro了!Android混淆避坑指南与最佳实践(附完整配置模板)

本文深入解析Android混淆配置中的常见问题与最佳实践,提供proguard-rules.pro文件的完整配置模板。从基础混淆规则到高级策略,涵盖JNI、反射、序列化等核心元素的保留方法,帮助开发者避免混淆陷阱,优化APK体积与性能。

weixin_30314793的博客 316

SpringBoot实现国际化(多语言)配置

本文介绍了Spring Boot实现国际化的核心原理与详细步骤。核心基于MessageSource接口,通过ResourceBundleMessageSource实现,根据用户Locale加载对应.properties文件。实现步骤包括:1)创建多语言资源文件;2)配置application.yml;3)开发LocaleResolver解析器处理请求头;4)注入配置类。测试时通过请求头中的lang参数切换中英文显示,未传参数时默认简体中文。该方法支持灵活扩展多语言,适用于全球化系统开发。

weixin_46425661的博客 2223

Java方法完整调用链生成工具

1. 前言 在很多场景下,如果能够生成Java代码中方法之间的调用链,是很有帮助的。 IDEA提供了显示调用指定Java方法向上的完整调用链的功能,可以通过“Navigate -> Call Hierarchy”菜单(快捷键:Ctrl+Alt+H)使用;Eclipse也提供了相同的功能。但以上都需要针对每个方法进行手工处理,拷贝出来的文本无法展示调用层级,且不支持生成指定Java方法向下的完整调用链。 以下实现了一个工具,能够批量生成指定Java方法向下的完整调用链,对于关注的Java方法,能够生成其

adrninistrat0r的博客 3万+

静态分析生成Java代码方法完整调用链

本文介绍了java-all-call-graph项目,该工具通过静态分析批量生成Java方法的完整调用链。支持两种调用链生成方式:从指定方法向下追踪所有被调用的方法,或向上追踪所有调用该方法的方法。适用于代码执行流程分析、影响范围确认、应用功能拆分和代码审计等场景。项目提供了扩展功能,可自动生成UML时序图,并支持方法过滤和自定义判断逻辑。生成的调用链文件包含类名、方法名、参数、行号、注解等详细信息,帮助开发者快速理解复杂调用关系。工具弥补了IDE手动分析方法的不足,提高了代码分析和问题定位的效率。

adrninistrat0r的博客 1286

SpringBoot多数据源配置 MybatisPlus配置类

*** 取得当前使用哪个数据源* @return*/@Override。

hudeyong926的专栏 1160
上一篇: Android Studio 2.0 NDK开发环境搭建
下一篇: 从浏览器中打开我们的应用
ttdevs
博客等级 码龄15年 388粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值