获取@ApiModelProperty注解的value与对应的类属性名

目标类:

代码实现:

public class Test{

    public static void main(String[] args) {
        Properties dingLinkMessageModel = getApiModelProperty("com.tfjybj.msg.model.DingLinkMessageModel");
        System.out.println(dingLinkMessageModel);
    }
    
    public static Properties getApiModelProperty(String classPath) {
        Properties p = new Properties();
        try {
            // 1.根据类路径获取类
            Class<?> c = Class.forName(classPath);
            // 2.获取类的属性
            Field[] declaredFields = c.getDeclaredFields();
            // 3.遍历属性,获取属性上ApiModelProperty的值,属性的名,存入Properties
            if (declaredFields.length != 0) {
                for (Field field : declaredFields) {
                    if (field.getAnnotation(ApiModelProperty.class) != null) {
                        // key和value可根据需求存
                        // 这存的key为注解的值,value为类属性名
                        p.put(field.getAnnotation(ApiModelProperty.class).value(), field.getName());
                    }
                }
                return p;
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
}

执行结果:

 

ps:该方式是通过反射机制实现的:当某注解上的@Retention()的值为RetentionPolicy.RUNTIME时,该注解就可以被反射机制所读取

来看一下@ApiModelProperty注解:

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
这段代码定义了一个Java实体,用于表示聚合型指标数据。下面是对代码的解析: 1. `@ApiModelProperty(value = "电流 A")`:这个注解用于给属性`current`提供元数据信息,指定了其含义为"电流 A"。 2. `private AggIndicator current;`:定义了一个为`current`的属性型为`AggIndicator`。这表示`current`属性是一个聚合型指标数据,包含了当前值、平均值、最小值、最大值、最小值的id和最大值的id。 3. `private static class AggIndicator`:定义了一个静态内部`AggIndicator`,用于表示聚合型指标数据。这个内部包含了以下属性: - `private Float mass;`:表示当前值。 - `private Float avg;`:表示平均值。 - `private Float min;`:表示最小值。 - `private Float max;`:表示最大值。 - `private Float minId;`:表示最小值的id。 - `private Float maxId;`:表示最大值的id。 4. `@ApiModelProperty("当前")`:这个注解用于给内部`AggIndicator`的属性`mass`提供元数据信息,指定了其含义为"当前"。 5. 似地,其他的`@ApiModelProperty`注解对应着内部`AggIndicator`的其他属性,分别指定了它们的含义。 6. `public AggIndicator getCurrent() { return current; }`:这是一个getter方法,用于获取`current`属性的值。 7. `@ApiModel("聚合型指标数据")`:这个注解用于给外部提供元数据信息,指定了外部的含义为"聚合型指标数据"。 综上所述,这段代码定义了一个聚合型指标数据的实体,包含了电流、电压、温度和SOC四个属性,每个属性都是一个`AggIndicator`对象,包含了当前值、平均值、最小值、最大值、最小值的id和最大值的id。这样的设计使得代码具有结构化和可读性,并且可以方便地表示和操作聚合型指标数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值