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

devtools/2024/10/19 7:28:20/

文章目录

    • 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.ppmy.cn/devtools/120502.html

相关文章

(c++)内存四区:1.代码区2.全局区(静态区)3.栈区4.堆区

//内存四区:1.代码区 2.全局区 3.栈区 4.堆区 1.放在代码区的有:1.写的代码:只读的、共享的、存放的二进制机器指令、由操作系统直接管理 2.放在全局区的有:1.全局的(变量或常量) 2.静态的&#xff0…

python 实现点的多项式算法

点的多项式算法介绍 点的多项式算法通常指的是通过一组点(即数据点,通常包括自变量和因变量的值)来拟合一个多项式函数的方法。这种方法在数值分析、统计学、机器学习等领域中非常常见。下面是一些常见的多项式拟合算法: 1. 最小…

Vue页面,基础配置

最简单页面 日期范围及字符搜索&#xff0c;监听器处理日期范围搜索控件清空重置问题导出、导出文件文件名称带日期时间表格日期指定格式显示。。。 <template><div class"app-container"><el-form :model"queryParams" ref"queryForm…

解决登录wandb问题

选择不登录 wandb 来使用它&#xff0c;不过这意味着你将失去与 wandb 云平台的连接&#xff0c;因此不会有数据上传到 wandb 的服务器。仍然可以使用 wandb 进行本地日志记录或完全禁用它。以下是几种方式来避免登录&#xff1a; 1. 禁用 wandb 的联网功能&#xff1a; 可以…

一、MQTT简介

一、MQTT 简介与起源 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;&#xff0c;即消息队列遥测传输协议&#xff0c;由 IBM 在 1999 年开发。最初&#xff0c;MQTT 是用于将石油管道上的传感器与卫星相链接&#xff0c;旨在为受限设备和低带宽、高延迟或…

Qemu开发ARM篇-7、uboot以及系统网络连接及配置

文章目录 1、uboot及linux版本网络设置1、宿主机虚拟网卡创建2、uboot使用tap0网卡3、启动测试 2、访问外网设置 在上一篇Qemu开发ARM篇-6、emmc/SD卡AB分区镜像制作并通过uboot进行挂载启动中&#xff0c;我们制作了AB分区系统镜像&#xff0c;并成功通过uboot加载kernel以及d…

在2核2G服务器安装部署MySQL数据库可以稳定运行吗?

阿里云2核2G服务器可以安装MySQL数据库吗&#xff1f;当然可以&#xff0c;并且可以稳定运行MySQL数据库&#xff0c;目前阿里云服务器网aliyunfuwuqi.com使用的就是阿里云2核2G服务器&#xff0c;在云服务器上安装MySQL数据库&#xff0c;可以稳定运行。 目前阿腾云用于运行M…

ElementPlus---Timeline 时间线组件使用示例

介绍 使用ElementPlus时间线组件在后台首页实现通知公告列表展示&#xff0c;使用Vue3开发。 实现代码 Vue3代码 <el-timeline><el-timeline-itemstyle"max-width: 600px"v-for"(activity, index) in activities":key"index":times…