JAVA类转成markDown 表格

本文介绍了一种使用Java反射API获取类中所有字段,并解析其上的注解信息的方法。通过遍历类的所有声明字段,检查并打印出带有@Column、@NotNull和@ApiModelPropert等注解的字段详细信息,包括字段名、是否为必填项、数据类型及描述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字段展示

在这里插入图片描述

代码(只写了一些初步的东西,请见谅,到时候会将一些东西抽出来的):

public class ReflectClass {
    public static void main(String[] args) {
        new ReflectClass().getField(PreCaseInfo.class);
    }
    public void  getField(Class <?> MyClass){
        Field[] declaredFields = MyClass.getDeclaredFields();
        for (Field field:declaredFields){
            String line="|";
            /*System.out.println(field.);*/
            if (field.isAnnotationPresent(Column.class)){
                Column annotation = field.getAnnotation(Column.class);
                try {
                    if (null!=annotation.name()){
                       line+=annotation.name()+"|";
                       if(field.isAnnotationPresent(NotNull.class)){
                           NotNull annotation1 = field.getAnnotation(NotNull.class);
                           Class<?>[] groups = annotation1.groups();
                           boolean isInsert=false;//是否必填的开关
                           for (Class <?> group:groups){
                               String className=group.getName();
                               if (className.contains("Insert")){
                                   isInsert=true;
                               }
                           }
                           if(isInsert){
                               line+="插入必填|";
                           }else {
                               line+="|";
                           }
                       }else {
                           line+="|";
                       }
                       line+=field.getType().getName().substring(field.getType().getName().lastIndexOf(".")+1)+"|";
                       if(field.isAnnotationPresent(ApiModelProperty.class)){
                           ApiModelProperty annotation1 = field.getAnnotation(ApiModelProperty.class);
                           line+=annotation1.value()+"|";
                       }else {
                           line+="|";
                       }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                System.out.println(line);
            }
        }

    }
}

结果展示:

|BH||String||
|ZYRYBH||String||
|TARYBH||String|同案人员|
|TARYXM||String|同案人员姓名|
|AJXZ||String|案件性质|
|CYLXBH|插入必填|String||
|CYGLLXBH|插入必填|String|人员管理类别id|
|JSH||String|监室号|
|FH||String|番号|
|WZ||Integer|位置|
|SFZAF|插入必填|Integer|是否重刑犯(0--false,1--true)|
|RSQBXBH|插入必填|String| 入所前表现id,逗号分割|
|RSQBX||String| 入所前表现,逗号分割|
|ZDFS|插入必填|Integer| 字典分数|
|WXDJBH|插入必填|String| 危险等级编号|
|WXDJ||String| 危险等级|
|ZHBX|插入必填|String| 风险等级|
|JBQK||String||
|JKZK||String| 健康状况|
|RSYY|插入必填|String| 入所原因id|
|SYPZBH||String| 收押凭证编号|

### 将 Java 中的 `List` 转换为 Markdown 表格或列表 在 Java 中,可以通过遍历 `List` 并构建相应的字符串来实现将其转换为 Markdown 格式的表格或列表。以下是两种常见的方式: #### 1. **将 `List<String>` 转换为 Markdown 列表** 对于简单的 Markdown 列表,可以直接通过迭代 `List` 来生成带有序号或无序标记的内容。 ```java import java.util.Arrays; import java.util.List; public class ListToMarkdown { public static void main(String[] args) { List<String> items = Arrays.asList("元素1", "元素2", "元素3"); StringBuilder markdownUnorderedList = new StringBuilder(); StringBuilder markdownOrderedList = new StringBuilder(); for (int i = 0; i < items.size(); i++) { markdownUnorderedList.append("- ").append(items.get(i)).append("\n"); markdownOrderedList.append((i + 1)).append(". ").append(items.get(i)).append("\n"); } System.out.println(markdownUnorderedList.toString()); // 输出无序列表 System.out.println(markdownOrderedList.toString()); // 输出有序列表 } } ``` 上述代码会生成以下 Markdown 内容: - 元素1 - 元素2 - 元素3 或者: 1. 元素1 2. 元素2 3. 元素3 此方法适用于简单型的 `List` 数据结构[^1]。 --- #### 2. **将复杂对象的 `List` 转换为 Markdown 表格** 如果 `List` 存储的是复杂的对象(如自定义),则可以将其属性提取并格式化为 Markdown 表格形式。 假设有一个品牌列表 `List<Brand>`,其中每个品牌的字段包括名称 (`name`) 和状态 (`status`)。 ```java import java.util.Arrays; import java.util.List; class Brand { private String name; private int status; public Brand(String name, int status) { this.name = name; this.status = status; } public String getName() { return name; } public int getStatus() { return status; } } public class ListToMarkdownTable { public static void main(String[] args) { List<Brand> brands = Arrays.asList( new Brand("华为", 1), new Brand("小米", 0) ); StringBuilder tableHeader = new StringBuilder("| 品牌名 | 状态 |\n| --- | --- |\n"); StringBuilder tableBody = new StringBuilder(); for (Brand brand : brands) { tableBody.append("| ") .append(brand.getName()) .append(" | ") .append(brand.getStatus() == 1 ? "启用" : "禁用") .append(" |\n"); } System.out.println(tableHeader.toString() + tableBody.toString()); } } ``` 运行以上代码后,将会得到如下 Markdown 表格内容: | 品牌名 | 状态 | | --- | --- | | 华为 | 启用 | | 小米 | 禁用 | 这种做法适合处理更复杂的业务逻辑以及多列的数据展示需求[^2]。 --- #### 总结 无论是简单的字符串列表还是复杂的对象列表,都可以通过适当的设计和编码技巧轻松地转化为 Markdown 格式。具体实现取决于实际的需求场景以及输入数据的形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值