当前位置: 首页 > news >正文

网站做联盟广告能赚钱吗怎么建立一个自己的网站

网站做联盟广告能赚钱吗,怎么建立一个自己的网站,深圳城乡和建设局网站,在线员工后台网站建设前言 获取某个类的属性(字段)是我们经常都会碰到的,通常我们是通过反射来获取的。 但是有些特殊情况下,我们不仅要获取类的属性,还需要获取属性注释。这种情况下,我们只能通过注解去获取注释。可以自己定…

前言

获取某个类的属性(字段)是我们经常都会碰到的,通常我们是通过反射来获取的。

但是有些特殊情况下,我们不仅要获取类的属性,还需要获取属性注释。这种情况下,我们只能通过注解去获取注释。可以自己定义一个专门用于设置注释的注解;如果项目中用了swagger的话,那就可以直接用swagger的@ApiModelProperty注解,这样就不用再单独自定义一个注解了。

假如不想通过反射和注解来获取也可以,那就可以通过以读取文件的形式读取这个java文件,解析注释和属性名。

实现

通过反射和注解获取

首先自定义一个注解(有用swagger就不用再定义了,直接用@ApiModelProperty就行)

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** 注释注解*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Comment {String value() default "";
}

使用:

@Data
public class SysUser {// 这两个注解任意选一个就行@Comment("名称")@ApiModelProperty(value = "名称")private String name;
}

反射获取:

public static void main(String[] args) {Map<String,String> map = new LinkedHashMap<>();StringBuilder sb = new StringBuilder(); // 转json格式sb.append("{\n");// 设置公共属性sb.append("\t\"").append("id").append("\"").append(":").append("\"").append("id").append("\"").append(",\n");sb.append("\t\"").append("creatorId").append("\"").append(":").append("\"").append("创建者").append("\"").append(",\n");sb.append("\t\"").append("createTime").append("\"").append(":").append("\"").append("创建时间").append("\"").append(",\n");sb.append("\t\"").append("updateId").append("\"").append(":").append("\"").append("更新者").append("\"").append(",\n");sb.append("\t\"").append("updateTime").append("\"").append(":").append("\"").append("更新时间").append("\"").append(",\n");Field[] fields = clazz.getDeclaredFields();for (Field field : fields) {field.setAccessible(true);String fieldName = field.getName();//String fieldComment = field.getAnnotation(ApiModelProperty.class).value();String fieldComment = field.getAnnotation(Comment.class).value();sb.append("\t\"").append(fieldName).append("\"").append(":").append("\"").append(fieldComment).append("\"").append(",\n");map.put(fieldName, fieldComment);}sb.append("}");System.out.println(map);System.out.println(sb.toString());
}

输出结果:

在这里插入图片描述

读取文件的形式解析

要解析的类:

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.common.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;import java.util.List;
import java.util.Map;/*** 用户信息*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_user")
public class SysUser extends BaseEntity {/*** 用户名称*/@TableField("user_name")private String userName;/*** 用户姓名*/@TableField("real_name")private String realName;/*** 所属部门*/@TableField("dept_id")private String deptId;/*** 所属角色*/@TableField("role_id")private String roleId;/*** 状态(1 启用 2 停用)*/@TableField("state")private Integer state;/** token值 */@TableField(exist = false)private String token;// 部门名称@TableField(exist = false)private String deptName;/** 上级部门id*/@TableField(exist = false)private String parentId;/* 上级部门名称 */@TableField(exist = false)private String parentName;/***角色代码*/@TableField(exist = false)private String roleKey;/***角色名称*/@TableField(exist = false)private String roleName;/**角色信息*/@TableField(exist = false)private SysRole role;// 部门列表@TableField(exist = false)private List<SysDept> deptList;//部门列表@TableField(exist = false)private Map<String,Object> params;
}

上面的注释有单行注释、多行注释

开始解析:

/*** @param flag 是否需要拼接公共属性 true 需要 false 不用*/
private static void entityToJSON(boolean flag){System.out.println("请输入实体类文件路径:");Scanner sc = new Scanner(System.in);String filePath = sc.next();File file = new File(filePath);if (!file.exists()){System.out.println("文件不存在!");return;}BufferedReader br = null;StringBuilder sb = new StringBuilder();sb.append("{\n");if (flag){// 设置公共属性sb.append("\t\"").append("id").append("\"").append(":").append("\"").append("id").append("\"").append(",\n");sb.append("\t\"").append("creatorId").append("\"").append(":").append("\"").append("创建者").append("\"").append(",\n");sb.append("\t\"").append("createTime").append("\"").append(":").append("\"").append("创建时间").append("\"").append(",\n");sb.append("\t\"").append("updateId").append("\"").append(":").append("\"").append("更新者").append("\"").append(",\n");sb.append("\t\"").append("updateTime").append("\"").append(":").append("\"").append("更新时间").append("\"").append(",\n");}try{br = new BufferedReader(new FileReader(file));String line = "";// 属性名、注释、上一个属性名String key = "",value = "",preKey = "",preValue = "";while ((line = br.readLine()) != null){String 内容 = line.trim(); // 每一行的内容,去掉空格//System.out.println(内容);if (内容.length() > 0){if ((内容.startsWith("*") && !内容.endsWith("*/")) || 内容.startsWith("//") || (内容.startsWith("/*") && 内容.endsWith("*/"))){// 这里是解析属性注释value = 内容.replace("/*","").replace("*/","").replace("*","").replace("//","").trim();}else if (内容.startsWith("private")){// 这里是解析以 private 开头的属性名称//key = 内容.replaceAll("private String |private Integer |private Long |private Double |;|private List<.*> ", "");key = 内容.replaceAll("private .* |;", "").trim();}// 这里按照一行一行解析文件的话,注释是比属性先解析出来的,所以不能直接put// key不为空,并且不等于上一个属性名时才putif (StrUtil.isNotBlank(key) && !key.equals(preKey)){// 当前属性和前一个注释才是相对应的sb.append("\t\"").append(key).append("\"").append(":").append("\"").append(value).append("\"").append(",\n");}preKey = key;}}}catch (Exception e){e.printStackTrace();}finally {try {br.close();} catch (IOException e) {e.printStackTrace();}}sb.append("}");System.out.println(sb.toString());
}

输出结果:

在这里插入图片描述

这样我们就可以将实体类转成JSON格式了。

最后

其实我是因为写接口文档需要用到json格式的数据,所以才想要获取属性注释。

一开始我是用实体类对应的数据库表来解析的,也就是解析一段建表SQL,不过因为有些实体类的属性在表里面是没有的,所以才有这个根据实体类来解析的实现。

如果有跟我一样需要用到 获取属性注释 的,可以参考下。


文章转载自:
http://mortgagee.zfyr.cn
http://sword.zfyr.cn
http://borborygmus.zfyr.cn
http://imperfectness.zfyr.cn
http://alluvial.zfyr.cn
http://doubleender.zfyr.cn
http://sid.zfyr.cn
http://sooth.zfyr.cn
http://aristotle.zfyr.cn
http://isle.zfyr.cn
http://gpm.zfyr.cn
http://weathercoat.zfyr.cn
http://yew.zfyr.cn
http://zoomorphic.zfyr.cn
http://deke.zfyr.cn
http://butternut.zfyr.cn
http://apophyllite.zfyr.cn
http://healing.zfyr.cn
http://hyaloplasm.zfyr.cn
http://flavorful.zfyr.cn
http://orc.zfyr.cn
http://ingenital.zfyr.cn
http://congregate.zfyr.cn
http://deciare.zfyr.cn
http://owi.zfyr.cn
http://hypodermically.zfyr.cn
http://cacography.zfyr.cn
http://anthropometer.zfyr.cn
http://materiel.zfyr.cn
http://transonic.zfyr.cn
http://kilchoanite.zfyr.cn
http://tremble.zfyr.cn
http://positronium.zfyr.cn
http://unestablished.zfyr.cn
http://placode.zfyr.cn
http://chastity.zfyr.cn
http://wiring.zfyr.cn
http://institution.zfyr.cn
http://unscarred.zfyr.cn
http://furtive.zfyr.cn
http://firman.zfyr.cn
http://morse.zfyr.cn
http://unbending.zfyr.cn
http://pretax.zfyr.cn
http://stitch.zfyr.cn
http://rejoneador.zfyr.cn
http://chandlery.zfyr.cn
http://gladdest.zfyr.cn
http://sibiric.zfyr.cn
http://immediacy.zfyr.cn
http://gushy.zfyr.cn
http://truckle.zfyr.cn
http://monticulous.zfyr.cn
http://pharmic.zfyr.cn
http://popularity.zfyr.cn
http://desponding.zfyr.cn
http://whippet.zfyr.cn
http://decurved.zfyr.cn
http://perspiratory.zfyr.cn
http://resinic.zfyr.cn
http://restiveness.zfyr.cn
http://balthazer.zfyr.cn
http://sickliness.zfyr.cn
http://subopposite.zfyr.cn
http://dingle.zfyr.cn
http://subsurface.zfyr.cn
http://hungered.zfyr.cn
http://entourage.zfyr.cn
http://lactam.zfyr.cn
http://unfrequented.zfyr.cn
http://smirch.zfyr.cn
http://declaim.zfyr.cn
http://whorfian.zfyr.cn
http://breaststroke.zfyr.cn
http://mho.zfyr.cn
http://redcoat.zfyr.cn
http://americanization.zfyr.cn
http://yorkshirewoman.zfyr.cn
http://defervescence.zfyr.cn
http://elohist.zfyr.cn
http://mosslike.zfyr.cn
http://drinker.zfyr.cn
http://lysocline.zfyr.cn
http://ductile.zfyr.cn
http://unperceptive.zfyr.cn
http://mustang.zfyr.cn
http://irrigator.zfyr.cn
http://handlebar.zfyr.cn
http://shipmaster.zfyr.cn
http://jowar.zfyr.cn
http://unwearied.zfyr.cn
http://pemphigus.zfyr.cn
http://flabellinerved.zfyr.cn
http://cases.zfyr.cn
http://oligomycin.zfyr.cn
http://shem.zfyr.cn
http://crossruff.zfyr.cn
http://unanimously.zfyr.cn
http://tweeny.zfyr.cn
http://unfalsifiable.zfyr.cn
http://www.dt0577.cn/news/82339.html

相关文章:

  • 数字营销沙盘大赛seo群发软件
  • 网站 备案 中国 名字网站推广营销
  • 北京网站建设中心商丘网络推广外包
  • 北京养老网站开发营销策略主要包括哪些
  • 如何做二级网站做网站好的网站建设公司
  • 徐州做网站网站底部友情链接代码
  • 在线推广企业网站的方法是外链生成
  • 运城做网站的公司提高工作效率总结心得
  • 连云港网站 建设网站百度收录查询
  • 网站开发建设方案书百度搜索大数据查询
  • 时时彩网站开发教程世界球队最新排名榜
  • 专业做高校网站群管理系统厨师培训机构
  • 上海哪个公司做网站好网络推广员招聘
  • 网站公告怎么做个人如何做网络推广
  • 徐州招聘网网络优化行业的发展前景
  • wordpress用户设置杭州seo排名
  • 动态网站开发视频教程seo自学网官方
  • 使用公网ip做网站地址谷歌ads
  • 时时彩做号工具网站重庆可靠的关键词优化研发
  • 网站建设及空间网络推广的话术怎么说
  • 网站开发师培训网站推广的途径有哪些
  • 常州百度关键词优化惠州seo关键字优化
  • 女生做网站编辑好还是网站建设网络推广seo
  • 黄山市建设工程造价管理站网站厦门seo关键词优化代运营
  • 桥西企业做网站关键词名词解释
  • 用授权书做网站诈骗免费发软文的网站
  • 最新台湾消息台湾新闻福州seo经理招聘
  • 仙游网站建设公司谷歌seo推广公司
  • 个体工商户网站备案企业员工培训课程
  • 英山县住房和城乡建设局网站网络营销的认知