AlexRoot 最近的时间轴更新
AlexRoot

AlexRoot

V2EX 第 556560 号会员,加入于 2021-09-22 11:18:50 +08:00
今日活跃度排名 22010
前天买的狗云服务器,今天就 ip 就无法访问了。
VPS  •  AlexRoot  •  37 天前  •  最后回复来自 woyaobaofu
10
第一份工作干了两年半,今天离职了
职场话题  •  AlexRoot  •  142 天前  •  最后回复来自 wuyazhishen
12
8 月底去日本,第一次去,有啥路线推荐吗?
旅行  •  AlexRoot  •  2023-08-15 11:42:16 AM  •  最后回复来自 shm7
30
关于 switch 代理服务器设置问题求助
问与答  •  AlexRoot  •  2022-02-10 22:03:09 PM  •  最后回复来自 ysc3839
11
各位 v2er 有合适的上海租房渠道吗?
  •  1   
    上海  •  AlexRoot  •  2022-02-09 11:35:53 AM  •  最后回复来自 AlexRoot
    27
    各位 v2er 有试过 macbook pro 内存扩容的吗?
    MacBook Pro  •  AlexRoot  •  2021-10-22 12:38:31 PM  •  最后回复来自 AlexRoot
    3
    职业发展咨询
    职场话题  •  AlexRoot  •  2021-10-17 22:22:03 PM  •  最后回复来自 AlexRoot
    4
    各位有入门哲学的书籍推荐吗?
    问与答  •  AlexRoot  •  2021-10-06 16:34:53 PM  •  最后回复来自 raaaaaar
    10
    AlexRoot 最近回复了
    3 天前
    回复了 bthulu 创建的主题 程序员 有什么数据库扛断电能力最强吗?
    @8355 我觉得你这个是靠谱的,定时关机,只要主动在下班前关机不就好了。
    4 天前
    回复了 devli 创建的主题 NAS 2024 年, Nas 系统选那个?
    去年用的绿联云,之前主要是存储相册,然后也跑了一堆 docker 。好多还是工作用用到的。
    55 天前
    回复了 xuyl 创建的主题 VPS v 友们的轻量云服务器续费了没?
    @fliu2476 我也是 NAS 目前是 frp 做穿透,还是需要一个公网 ip.
    55 天前
    回复了 xuyl 创建的主题 VPS v 友们的轻量云服务器续费了没?
    @sinry 有便宜云推荐吗?
    @xxq2334 海外 vps 平台。主打的就是便宜。
    @ithrows 有啥操作秘诀吗?
    @q000q000 vmess 裸奔,应该是被墙了,第一次自建没有经验。
    chatgtp 使用反射方式的解决方案:
    要使用反射优化这段 Java 代码,反射可以用来动态地调用方法和设置字段,从而减少重复的代码。以下是一些优化的思路:

    ### 1. 使用反射动态调用方法

    可以通过反射来获取对象的字段和方法,并根据需求动态调用。例如,如果 `getColumnValue` 是一个在多个地方使用的方法,可以通过反射一次性获取并调用:

    ```java
    Field field = dto.getClass().getDeclaredField("columnName");
    field.setAccessible(true);
    Object value = field.get(dto);
    ```

    然后使用反射方法 `invoke` 来执行相关逻辑。

    ### 2. 将重复的 if-else 逻辑提取为方法

    可以创建一个通用的处理方法来简化 `if-else` 的逻辑。通过传入字段名称和相应的操作来执行相同的处理:

    ```java
    private void setColumnIfMatches(Sheet sheet, Cell cell, String columnName, String methodName, IDto dto) throws Exception {
    if (cell.getStringCellValue().equals(columnName)) {
    Method method = dto.getClass().getMethod(methodName);
    Object value = method.invoke(dto);
    sheet.setCellValue(value != null ? value.toString() : "", true);
    }
    }
    ```

    然后在主逻辑中调用:

    ```java
    setColumnIfMatches(sheet, cell, "column1", "getColumnValue1", dto);
    setColumnIfMatches(sheet, cell, "column2", "getColumnValue2", dto);
    ```

    ### 3. 使用映射来简化逻辑

    可以用一个 `Map<String, String>` 来映射字段名称和方法名,使用反射来动态获取和调用:

    ```java
    Map<String, String> fieldMethodMap = new HashMap<>();
    fieldMethodMap.put("column1", "getColumnValue1");
    fieldMethodMap.put("column2", "getColumnValue2");
    // ... more mappings

    for (Map.Entry<String, String> entry : fieldMethodMap.entrySet()) {
    setColumnIfMatches(sheet, cell, entry.getKey(), entry.getValue(), dto);
    }
    ```

    ### 总结

    使用反射和映射的结合可以显著减少代码的冗余,提升代码的可维护性和可扩展性。同时请注意,反射在某些情况下可能会引入一些性能开销,需在关键路径慎用。
    想知道这个长截图是如何实现的?
    分子+10086
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1800 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:28 · PVG 00:28 · LAX 08:28 · JFK 11:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.