HarmonyOS 鸿蒙Next 如何自定义一个注解只接收指定范围的参数

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何自定义一个注解只接收指定范围的参数

我定义了一个函数, 但是想限制该函数中的一个参数只接收特定范围内的值.

这个范围是: 4 个常量字符串: str1, str2, str3, str4.

然后我想自定义一个注解: @Option

然后对该函数添加该注解: func method(@Option op: String).

之后, 如果调用这个函数确使用了上述 4 个字符串之外的值, 那么编译器将会报错.

请问这个自定义注解如何实现?


更多关于HarmonyOS 鸿蒙Next 如何自定义一个注解只接收指定范围的参数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

arkts自定义注解与TS自定义注解实现方式一致,可以参考如下的aop demo:

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Page {
 [@State](/user/State) message: string = ‘Hello World’;
 aboutToAppear() {
   this.demo(‘hello!!!’)
 }

 build() {
   Flex() { }.backgroundColor(Color.Green).height(‘100%’);
 }

 [@MyDescriptor](/user/MyDescriptor)
 demo(param: string) {
   console.info(’…’ + param);
   return param;
 }
}

export function MyDescriptor(target: Object, key: string, descriptor: PropertyDescriptor): PropertyDescriptor {
 const originalMethod: Function = descriptor.value
 descriptor.value = (args: Object[]) => {
   console.info( ...Calling ${target.constructor.name} method ${key} with argument: ${args} )
   const result: Object = originalMethod(args)
   console.info( ...Method ${key} returned: ${result} )
   return result;
 }
 return descriptor;
}

更多关于HarmonyOS 鸿蒙Next 如何自定义一个注解只接收指定范围的参数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,自定义注解以限制参数范围通常涉及使用Java或Kotlin的注解处理工具。以下是一个基本示例,展示如何定义一个注解并限制其参数范围(虽然注解本身不直接执行检查,但可以通过编译器插件或运行时检查实现):

  1. 定义注解

    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    [@Retention](/user/Retention)(RetentionPolicy.RUNTIME)
    [@Target](/user/Target)(ElementType.PARAMETER)
    public [@interface](/user/interface) Range {
        int min() default Integer.MIN_VALUE;
        int max() default Integer.MAX_VALUE;
    }
    
  2. 使用注解

    public void exampleMethod([@Range](/user/Range)(min = 1, max = 10) int value) {
        // 方法实现
    }
    
  3. 运行时检查(可选): 在方法内部添加逻辑以验证参数是否符合注解指定的范围。

注意,注解本身不执行任何逻辑,它仅提供元数据。要实现参数范围的实际检查,需要编写额外的代码(如运行时检查)或使用注解处理器生成代码。

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

回到顶部