HarmonyOS 鸿蒙Next 反射获取类字段和值,以及自定义注解类、方法和参数的实现

HarmonyOS 鸿蒙Next 反射获取类字段和值,以及自定义注解类、方法和参数的实现
我现在有个需求,就是需要将一个实体类生成一个数据表,但该实体类的参数实在太多了,写SQL能实现,但是太麻烦,以及后续增删改差也是一个繁琐的过程

所以我想能否实现通过实体类,反射获得该类中所有的字段名和字段对应的值;

另外能否实现通过自定义注解类,如android的greenDao第三方一样,通过注解@Entry就能实现对应类的表的创建,通过@Transient就能在创建表的时候过滤掉,不生成对应的表字段

我研究了一天,通过Object.getKeys可以得到字段名,通过Reflect可以得到值,但依然存在问题,比如Object.getKeys的时候,也会把子类的参数也一并获取出来

希望我的想法能有办法实现,期待大佬回答

let callInfo = new CallInfo()
let columns: string[] = Object.keys(callInfo)
columns.forEach((name) => {
  console.debug("牛哇牛哇", name, Reflect.get(callInfo, name))
})

更多关于HarmonyOS 鸿蒙Next 反射获取类字段和值,以及自定义注解类、方法和参数的实现的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

更多关于HarmonyOS 鸿蒙Next 反射获取类字段和值,以及自定义注解类、方法和参数的实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


啊?那该怎么实现自定义的注解呀,谢谢大佬教导,

class-transformer

在HarmonyOS(鸿蒙)系统中,反射机制允许程序在运行时动态地访问类的字段、方法以及其它信息。以下是如何在HarmonyOS中实现反射获取类字段和值,以及自定义注解类、方法和参数的基本方法:

反射获取类字段和值:

  1. 获取类对象:使用Class.forName(String className)获取类的Class对象。
  2. 获取字段:使用Class.getDeclaredField(String name)获取类的字段。
  3. 设置字段值:字段对象调用set(Object obj, Object value)方法,其中obj是字段所属的实例对象,value是要设置的新值。

自定义注解类、方法和参数:

  1. 定义注解:使用@interface关键字定义注解,并可以包含元素(类似于类的成员变量)。
  2. 应用注解:在类、方法或参数前使用@注解名应用注解。
  3. 获取注解:使用反射机制获取类、方法或参数的注解信息,例如Method.getAnnotation(Class<T> annotationClass)

请注意,反射操作可能会带来性能开销和安全问题,因此在使用时需要谨慎。

如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部