【鸿蒙开发】探索HarmonyNext开发:常用注解详解与实战

文章目录

    • 1. @Component
    • 2. @Entity
    • 3. @Ability
    • 4. @Slice
    • 5. @IntentFilter
    • 6. @Database
    • 7. @PrimaryKey
    • 8. @Entry
    • 9. @Builder
    • 总结

在HarmonyNext开发中,注解是代码的重要组成部分,它们为开发者提供了一种简洁的方式来配置和管理应用的各种元素。本文将介绍一些HarmonyNext中的常用注解及其作用,并通过代码示例来展示如何使用它们。

1. @Component

作用@Component注解用于标记一个Ability组件,它是HarmonyOS应用的基本组成单元。使用该注解可以定义Ability的入口,生命周期等。
代码示例

import ohos.ace.ability.AceAbility;
import ohos.app.Component;
@Component
public class MainAbility extends AceAbility {@Overridepublic void onStart(Intent intent) {super.onStart(intent);// Ability启动时的逻辑}
}

2. @Entity

作用@Entity注解用于定义一个实体类,通常与数据库操作相关,用于标记类为数据库表。
代码示例

import ohos.data.orm.OrmObject;
import ohos.data.orm.annotation.Entity;
import ohos.data.orm.annotation.PrimaryKey;
@Entity(tableName = "users")
public class User extends OrmObject {@PrimaryKeyprivate Integer id;private String name;private Integer age;// Getters and Setters
}

3. @Ability

作用@Ability注解用于定义Ability类,Ability是HarmonyOS应用的基本功能单元。
代码示例

import ohos.ability.Ability;
import ohos.ability.AbilitySlice;
import ohos.ability.AbilityPackage;
@Ability
public class MainAbility extends Ability {@Overridepublic void onStart(Intent intent) {super.onStart(intent);// Ability启动时的逻辑}
}

4. @Slice

作用@Slice注解用于定义AbilitySlice,AbilitySlice是Ability中的一个页面,用于显示界面。
代码示例

import ohos.ability.AbilitySlice;
@Slice
public class MainAbilitySlice extends AbilitySlice {@Overridepublic void onStart(Intent intent) {super.onStart(intent);// AbilitySlice启动时的逻辑}
}

5. @IntentFilter

作用@IntentFilter注解用于定义Ability或AbilitySlice的意图过滤器,用于过滤和处理特定的系统意图。
代码示例

import ohos.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.Operation;
@Ability
@IntentFilter(actions = {Intent.ACTION_VIEW})
public class MainAbility extends Ability {@Overridepublic void onStart(Intent intent) {super.onStart(intent);// Ability启动时的逻辑}
}

6. @Database

作用@Database注解用于定义数据库相关信息,如数据库版本、表等。
代码示例

import ohos.data.orm.OrmDatabase;
import ohos.data.orm.annotation.Database;
@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends OrmDatabase {// Database related operations
}

7. @PrimaryKey

作用@PrimaryKey注解用于标记实体类中的主键字段。
代码示例

import ohos.data.orm.annotation.Entity;
import ohos.data.orm.annotation.PrimaryKey;
@Entity(tableName = "users")
public class User extends OrmObject {@PrimaryKeyprivate Integer id;private String name;private Integer age;// Getters and Setters
}

8. @Entry

作用@Entry注解用于标记一个类作为HarmonyOS应用中的页面入口。它是用于定义Page Ability的注解,通过它可以指定页面的布局文件、菜单配置等。
代码示例

import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.agp.components.ComponentContainer;
import ohos.agp.window.service.Window;
import ohos.app.Context;
@Entry
public class MainActivity extends Ability {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_main_ability); // 设置页面布局}@Overridepublic void onActive() {super.onActive();// 页面激活时的逻辑}@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);// 页面到前台的逻辑}
}

在上述代码中,@Entry注解标记了MainActivity类,表示它是一个页面入口。setUIContent方法用于设置页面的布局,它接受一个布局资源ID,这个ID对应于resources/base/layout目录下的布局文件。
使用@Entry注解可以简化页面的定义过程,使得页面的配置更加直观和方便。开发者可以通过注解直接关联布局文件,而无需在代码中进行繁琐的布局加载和配置。

9. @Builder

作用@Builder注解用于简化实体类对象的创建过程,它提供了一种便捷的方式来构建复杂对象的实例。通过@Builder,开发者可以定义一个构建器类,该类包含一系列的构造方法,用于设置对象的各个属性。
代码示例

import ohos.data.orm.OrmObject;
import ohos.data.orm.annotation.Entity;
import ohos.data.orm.annotation.PrimaryKey;
@Entity(tableName = "users")
public class User extends OrmObject {@PrimaryKeyprivate Integer id;private String name;private Integer age;public static class Builder {private Integer id;private String name;private Integer age;public Builder setId(Integer id) {this.id = id;return this;}public Builder setName(String name) {this.name = name;return this;}public Builder setAge(Integer age) {this.age = age;return this;}public User build() {User user = new User();user.id = id;user.name = name;user.age = age;return user;}}
}

在这个例子中,User类使用@Entity注解标记,并且包含三个属性:idnameageUser类还定义了一个Builder类,它包含三个设置属性值的方法(setIdsetNamesetAge),每个方法都返回Builder实例,这样就可以链式调用这些方法来构建对象。build方法用于创建并返回一个User对象。
使用@Builder注解可以大大简化对象的创建过程,尤其是对于具有多个参数的对象。开发者只需调用一系列的设置方法,最后调用build方法即可获得一个完整的对象实例,这种方式使得代码更加简洁和易于理解。

总结

本文介绍了HarmonyNext开发中一些常用的注解及其作用,并通过代码示例展示了如何在HarmonyOS应用开发中使用这些注解。注解为开发者提供了一种强大的代码组织和管理方式,有助于简化代码和提高开发效率。希望这些内容能够帮助您更好地理解和应用HarmonyNext的注解,为您的鸿蒙开发之旅增添助力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1553244.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

建筑业挂靠行为的防范建议

在建筑行业中,挂靠行为的普遍存在给许多企业带来了法律风险和信誉风险。为了防范这些风险,企业需要采取一系列有效的措施。 一、加强资质管理 企业应当通过合法途径获取和提升自身的资质等级,避免因资质不足而产生挂靠的需求。加强资质管理是…

Python从入门到高手4.2节-掌握循环控制语句

目录 4.2.1 理解循环控制 4.2.2 for循环结构 4.2.3 循环结构的else语句 4.2.4 while循环结构 4.2.5 循环结构可以嵌套 4.2.6 国庆节吃好玩好 4.2.1 理解循环控制 我们先来搞清楚循环的含义。以下内容引自汉语词典: 循环意指往复回旋,指事物周而复始地运动或变…

html+css+js实现Collapse 折叠面板

实现效果&#xff1a; HTML部分 <div class"collapse"><ul><li><div class"header"><h4>一致性 Consistency</h4><span class"iconfont icon-jiantou"></span></div><div class"…

Linux中的进程间通信之共享内存

共享内存 共享内存示意图 共享内存数据结构 struct shmid_ds {struct ipc_perm shm_perm; /* operation perms */int shm_segsz; /* size of segment (bytes) */__kernel_time_t shm_atime; /* last attach time */__kernel_time_t shm_dtime; /* last detach time */__kerne…

【Java】—— 集合框架:List接口常用方法与List接口的实现类

目录 4. Collection子接口1&#xff1a;List 4.1 List接口特点 4.2 List接口方法 4.3 List接口主要实现类&#xff1a;ArrayList 4.4 List的实现类之二&#xff1a;LinkedList 4.5 List的实现类之三&#xff1a;Vector 4.6 练习 4. Collection子接口1&#xff1a;List …

【Docker】docker的存储

介绍 docker存储主要是涉及到3个方面&#xff1a; 第一个是容器启动时需要的镜像 镜像文件都是基于图层存储驱动来实现的&#xff0c;镜像图层都是只读层&#xff0c; 第二个是&#xff1a; 容器读写层&#xff0c; 容器启动后&#xff0c;docker会基于容器镜像的读层&…

【python实操】python小程序之随机抽签以及for循环计算0-x的和

引言 python小程序之随机抽签以及for循环计算0-x的和 文章目录 引言一、随机抽签1.1 题目1.2 代码1.3 代码解释 二、for循环计算0-x的和2.1 题目2.2 代码2.3 代码解释 三、思考3.1 随机抽签3.2 for循环计算0-x的和 一、随机抽签 1.1 题目 使用input输入五个同学的名字随机抽取…

C++(Qt)软件调试---内存调试器Dr.Memory(21)

C(Qt)软件调试—内存调试器Dr. Memory&#xff08;21&#xff09; 文章目录 C(Qt)软件调试---内存调试器Dr. Memory&#xff08;21&#xff09;[toc]1、概述&#x1f41c;2、安装Dr.Memory&#x1fab2;3、命令行使用Dr.Memory&#x1f997;4、Qt Creator集成使用Dr.Memory&…

主流HR软件对比,五大系统功能与成本一览

五款主流HR系统包括ZohoPeople、金蝶人力云、用友人力云、红海eHR和SAPSuccessFactors&#xff0c;各具特色。ZohoPeople功能丰富&#xff0c;金蝶人力云云端部署&#xff0c;用友人力云多模块集成&#xff0c;红海eHR定制化服务&#xff0c;SAPSuccessFactors全球化视野。企业…

vite中sass警告JS API过期

1.问题 在Vite创建项目中引入Sass弹出The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0 - vite中sass警告JS API过期 The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0警告提示表明你当前正在使用的 Dart Sass 版本中&#…

VisionTS:基于时间序列的图形构建高性能时间序列预测模型,利用图像信息进行时间序列预测

构建预训练时间序列模型时面临的主要挑战是什么&#xff1f;获取高质量、多样化的时间序列数据。目前构建基础预测模型主要有两种方法&#xff1a; 迁移学习LLM&#xff1a;通过针对时间序列任务定制的微调或分词策略&#xff0c;重新利用预训练的大型语言模型&#xff08;LLM…

CertiK《Hack3d:2024年第三季度安全报告》(附报告全文链接)

CertiK《Hack3d&#xff1a;2024年第三季度Web3.0安全报告》现已发布&#xff0c;本次报告深入分析了2024年7月至9月的链上安全状况&#xff0c;本季度总损失金额为7.53亿美元&#xff0c;网络钓鱼和私钥泄露是本季度造成资产损失的主要原因。 ​ 关键数据 2024年第三季度&a…

用Python实现运筹学——Day 9: 线性规划的灵敏度分析

一、学习内容 1. 灵敏度分析的定义与作用 灵敏度分析&#xff08;Sensitivity Analysis&#xff09; 是在优化问题中&#xff0c;分析模型参数变化对最优解及目标函数值的影响。它帮助我们了解在线性规划模型中&#xff0c;当某些参数&#xff08;如资源供应量、成本系数等&a…

【C语言】数组(下)

6、二维数组的创建 6.1二维数组的概念 通过数组&#xff08;上&#xff09;介绍&#xff0c;我们学习了一维数组&#xff0c;数组的元素都是内置类型的&#xff0c;如果我们把一维数组作为数组的元素&#xff0c;这时就是二维数组&#xff0c;以此类推&#xff0c;如果把二维…

Mysql 索引底层数据结构和算法

索引数据结构 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的一种有序数据结构。索引是存储到表空间中&#xff0c;当我们的 sql 中的where条件用到索引的时候&#xff0c;会在存储层就过滤出数据来&#xff0c;如果不走索引&#xff0c;则需要在server层过滤。 …

5分钟学会SPI

SPI 定义&#xff1a;SPI 是一种机制&#xff0c;允许用户在不修改现有代码的情况下扩展和替换特定服务的实现。它定义了一组接口&#xff08;Service Interfaces&#xff09;和一组实现&#xff08;Service Providers&#xff09;&#xff0c;使得应用程序可以动态加载和使用…

Linux:进程控制(一)

目录 一、写时拷贝 1.创建子进程 2.写时拷贝 二、进程终止 1.函数返回值 2.错误码 3.异常退出 4.exit 5._exit 一、写时拷贝 父子进程&#xff0c;代码共享&#xff0c;不作写入操作时&#xff0c;数据也是共享的&#xff0c;当任意一方试图写入&#xff0c;便通过写时拷…

【数学建模国赛】2024年数学建模国赛B题思路分析

学习编程就得循环渐进&#xff0c;扎实基础&#xff0c;勿在浮沙筑高台 循环渐进Forward-CSDN博客 目录 循环渐进Forward-CSDN博客 题目 第一问分析 第二问分析 问题三分析 第四问分析 总结&#xff1a; 第一次参加国赛&#xff0c;侥幸被推送国一参与评奖。在省赛区结…

计网问答大题(期末复习)

计网总结笔记 概述 互联网的 2 个重要基本特点&#xff1a;连通性&#xff0c;资源共享 从互联网的工作方式上看&#xff0c;可以划分为两大块&#xff1a; •边缘部分&#xff1a; 由所有连接在互联网上的主机组成&#xff0c;由用户直接使用&#xff0c;用来进行通信&…

Java 方法前面加 <T> 是做什么?泛型方法 原理、样例

在 Java 中&#xff0c;方法前面加上 <T> 表示该方法是一个泛型方法。泛型方法允许你在方法签名中指定一个或多个类型参数&#xff0c;从而使得该方法可以处理多种类型的对象。这增加了代码的灵活性和复用性。 一、基本语法 <T1, T2, ..., Tn> 返回类型 方法名(形…