Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
JavaParser中方法后添加行注释的限制与AST注释处理机制_创想鸟

JavaParser中方法后添加行注释的限制与AST注释处理机制

javaparser中方法后添加行注释的限制与ast注释处理机制

本文深入探讨JavaParser处理源代码注释的机制,特别指出直接在方法声明结束后添加独立行注释的局限性。我们将解释JavaParser如何将注释关联至抽象语法树(AST)节点,以及为何尝试通过修改子节点列表来插入注释会失败,并提供对JavaParser注释模型的正确理解,同时探讨针对此类需求的替代解决方案。

JavaParser的AST与注释模型

JavaParser是一个强大的Java源代码解析库,它能够将Java源代码转换为抽象语法树(AST),从而允许程序化地分析和修改代码。在JavaParser的AST模型中,注释并非独立的、可任意插入的节点。相反,注释通常被视为特定AST节点的属性,或者作为“孤儿注释”(Orphan Comments)存储。

具体来说:

节点关联注释: 大多数注释会直接与一个AST节点关联。例如,一个类声明前的Javadocs或行注释,会被解析为该ClassOrInterfaceDeclaration节点的comment属性。您可以通过Node#getComment()方法获取与节点直接关联的注释。孤儿注释: 有些注释可能不直接依附于任何特定的代码元素,例如两个方法之间的空白行上的注释。JavaParser会将这些注释作为“孤儿注释”存储在最近的父节点中,并在代码生成时尝试将它们放置在合理的位置。然而,这并不意味着可以精确控制其在任意文本位置的插入。

理解这一点至关重要,因为这意味着您无法在AST中创建并插入一个完全独立的LineComment节点,使其位于方法结束大括号之后,而不与任何其他AST节点产生逻辑关联。

立即学习“Java免费学习笔记(深入)”;

尝试在方法后添加注释的困境分析

在尝试解决诸如在@lombok.Generated注解的方法后添加// parasoft-end-suppress ALL这样的注释时,常见的误区是试图将其作为一个独立的AST节点插入到MethodDeclaration的子节点列表中。

考虑以下代码片段:

// ...@Overridepublic Visitable visit(MethodDeclaration n, Void arg) {    // ...    // n 是 MethodDeclaration 节点    List childNodeList = n.getChildNodes();    // childNodeList.add(new LineComment("// parasoft-end-suppress ALL")); // 尝试在此处添加注释    // ...    return super.visit(n, arg);}// ...

当执行childNodeList.add(new LineComment(…))时,会抛出UnsupportedOperationException。原因如下:

Node#getChildNodes()的返回类型: Node#getChildNodes()方法返回的是一个不可修改的列表视图。它反映了当前AST节点的直接子节点结构,但本身并不支持直接添加或删除任意节点。对AST的修改应该通过节点自身的API(如addMember(), setBody(), setComment()等)或其子节点的API来完成。AST结构限制: 更深层次的原因是JavaParser的AST设计。一个MethodDeclaration节点包含其注解、修饰符、返回类型、名称、参数列表和方法体。方法体结束后(即}之后)的任何文本内容,在AST结构上已经不属于该MethodDeclaration节点的直接“内部”或“子节点”范畴。它要么是下一个AST元素(如另一个方法、字段或类)的前置注释,要么是文件末尾的孤儿注释。JavaParser的AST模型没有一个结构化的位置来表示一个独立存在于方法结束大括号 之后 的行注释。

因此,直接通过修改MethodDeclaration的子节点列表来插入一个独立行注释是不符合JavaParser AST设计理念的,也无法通过其API实现。

瞬映 瞬映

AI 快速创作数字人视频,一站式视频创作平台,让视频创作更简单。

瞬映 57 查看详情 瞬映

JavaParser中注释的正确处理方式

虽然不能在方法后插入独立的行注释,但JavaParser提供了为AST节点设置注释的机制。

前置注释:这是最常见的注释处理方式,注释通常位于其所描述的AST节点之前。在原问题中,为@lombok.Generated注解设置前置注释是成功的,因为setComment()方法就是为此设计的。

import com.github.javaparser.ast.body.MethodDeclaration;import com.github.javaparser.ast.comments.LineComment;import com.github.javaparser.ast.expr.MarkerAnnotationExpr;import com.github.javaparser.ast.visitor.ModifierVisitor;import com.github.javaparser.ast.visitor.Visitable;public class CommentModifier extends ModifierVisitor {    @Override    public Visitable visit(MethodDeclaration n, Void arg) {        n.findAll(MarkerAnnotationExpr.class).forEach(ann -> {            if (ann.getNameAsString().equals("lombok.Generated")) {                // 为注解设置前置行注释                // setComment() 方法会替换掉现有注释,并确保在代码生成时打印在注解之前                ann.setComment(new LineComment(" parasoft-begin-suppress ALL"));            }        });        return super.visit(n, arg);    }}

请注意,setLineComment()是setComment()的一个便捷方法,它会创建一个LineComment并将其设置为节点的注释。

孤儿注释处理:当JavaParser解析源代码时,如果发现一些注释不直接依附于任何AST节点,它们会被收集为“孤儿注释”,并通常存储在最近的父节点中。在代码生成时,JavaParser会尝试智能地打印这些孤儿注释。然而,这种机制并不能保证将注释精确地放置在方法结束大括号之后。

结论与替代方案探讨

核心结论是: JavaParser的AST模型不直接支持在方法声明(包括其结束大括号) 之后 插入一个不属于任何后续AST元素的独立行注释。这种需求超出了其AST的结构化表示能力。

如果您的目标(例如,为了满足代码分析工具的抑制规则)必须严格在方法结束大括号之后添加注释,以下是一些替代方案:

重新评估注释位置:首先,重新评估代码分析工具(如Parasoft Jtest)对parasoft-end-suppress注释位置的严格要求。

如果该注释可以放置在方法体内部的最后一个语句之后,您可以尝试修改该语句的注释。如果它能作为下一个方法、字段或类的前置注释,也可以通过JavaParser进行设置。但通常情况下,end-suppress注释是需要紧跟在被抑制的代码块或方法之后的。

代码文本后处理(推荐方案):这是最灵活且可靠的方案,尤其适用于需要精确控制文本位置的场景。其基本思路是:

使用JavaParser完成所有AST层面的修改(例如,添加前置注释)。将修改后的AST保存为字符串或写入文件。读取该字符串或文件内容。使用字符串操作或正则表达式来定位目标方法(通过其签名和结束大括号),并在其后插入所需的注释文本。

示例思路:

import com.github.javaparser.StaticJavaParser;import com.github.javaparser.ast.CompilationUnit;import com.github.javaparser.ast.body.MethodDeclaration;import com.github.javaparser.ast.comments.LineComment;import com.github.javaparser.ast.expr.MarkerAnnotationExpr;import com.github.javaparser.ast.visitor.ModifierVisitor;import com.github.javaparser.ast.visitor.Visitable;import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.regex.Matcher;import java.util.regex.Pattern;public class MethodCommentAppender {    public static void main(String[] args) throws IOException {        String sourceCode = """                package com.example;                public class MyClass {                    @lombok.Generated                    void generatedMethod1() {                        System.out.println("Hello");                    }                    void normalMethod() {                        System.out.println("World");                    }                    @lombok.Generated                    private static String generatedMethod2(int id) {                        return "ID: " + id;                    }                }                """;        // 1. 使用 JavaParser 进行 AST 修改 (例如添加前置注释)        CompilationUnit cu = StaticJavaParser.parse(sourceCode);        cu.accept(new ModifierVisitor() {            @Override            public Visitable visit(MethodDeclaration n, Void arg) {                n.findAll(MarkerAnnotationExpr.class).forEach(ann -> {                    if (ann.getNameAsString().equals("lombok.Generated")) {                        ann.setComment(new LineComment(" parasoft-begin-suppress ALL"));                    }                });                return super.visit(n, arg);            }        }, null);        // 2. 将修改后的 AST 打印为字符串        String modifiedSource = cu.toString();        System.out.println("--- JavaParser 修改后 ---");        System.out.println(modifiedSource);        // 3. 进行文本后处理,插入方法后的注释        StringBuilder finalSource = new StringBuilder();        Pattern methodPattern = Pattern.compile(            "(?s)(@lombok.Generateds+.*?s+w+s*([^)]*)s*{.*?})s*(?=R|Z|//|/*)"        ); // 匹配 @lombok.Generated 方法声明到其结束大括号        Matcher matcher = methodPattern.matcher(modifiedSource);        int lastEnd = 0;        while (matcher.find()) {            finalSource.append(modifiedSource, lastEnd, matcher.end()); // 添加匹配到的方法代码            finalSource.append("// parasoft-end-suppress ALL"); // 在方法后插入注释            lastEnd = matcher.end();        }        finalSource.append(modifiedSource, lastEnd, modifiedSource.length()); // 添加剩余部分        System.out.println("--- 文本后处理后 ---");        System.out.println(finalSource.toString());        // 4. 将最终结果保存到文件        // Files.writeString(Paths.get("/path/to/output/MyClass.java"), finalSource.toString());    }}

正则表达式说明: (?s)(@lombok.Generateds+.*?s+w+s*([^)]*)s*{.*?})s*(?=R|Z|//|/*)

(?s): 开启DOTALL模式,使.匹配包括换行符在内的所有字符。(@lombok.Generateds+.*?s+w+s*([^)]*)s*{.*?}): 匹配从@lombok.Generated开始,到方法结束大括号}为止的整个方法声明和方法体。@lombok.Generated: 匹配注解。s+: 匹配一个或多个空白字符。.*?: 非贪婪匹配任意字符,直到下一个模式。w+s*([^)]*): 匹配方法名和参数列表。{.*?}: 匹配方法体(包括大括号)。s*: 匹配方法体结束后可能存在的空白字符。(?=R|Z|//|/*): 正向先行断言,确保匹配在换行符、字符串结尾、行注释或块注释之前结束,避免吞噬掉后续内容。

自定义打印器(高级):对于非常复杂的、需要精细控制代码生成过程的需求,可以考虑实现自定义的JavaParser打印器(Printer 或 PrettyPrinter)。但这通常涉及深入理解JavaParser的内部机制,并且工作量较大,不适合一般情况。

总结

理解JavaParser的AST注释模型是高效使用它的关键。直接在AST中插入“独立”的行注释,尤其是在方法结束大括号之后,不符合其设计理念,也无法通过其标准API实现。对于此类精确的文本格式化需求,结合JavaParser进行AST操作和后续的文本处理(如使用正则表达式)是目前最实用和推荐的解决方案。这使得您既能利用JavaParser强大的AST操作能力,又能满足特定的文本输出要求。

以上就是JavaParser中方法后添加行注释的限制与AST注释处理机制的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1025236.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
大家买高端机意愿降低:iPhone 15遇冷 苹果不降价不好卖
上一篇 2025年12月2日 01:44:32
如何通过css animation制作悬停按钮特效
下一篇 2025年12月2日 01:44:37

相关推荐

  • QQ好友动态无法查看怎么办

    QQ好友动态无法查看怎么办QQ好友动态无法查看怎么办QQ好友动态无法查看怎么办QQ好友动态无法查看怎么办

    首先检查好友动态权限,确认是否被限制访问;再核实自身账号状态,排除被拉黑可能;接着清除QQ缓存并更新至最新版本;最后尝试切换网络或使用网页端查看。 QQ好友动态无法查看,通常和权限设置、网络问题或软件异常有关。先别着急,可以按以下方法逐一排查解决。 检查好友的动态权限设置 有些好友设置了动态访问权限…

    2026年9月26日 • 用户投稿
    000
  • NVIDIA仍占67% 5年后AMD能抢4%的AI显卡市场

    NVIDIA仍占67% 5年后AMD能抢4%的AI显卡市场NVIDIA仍占67% 5年后AMD能抢4%的AI显卡市场NVIDIA仍占67% 5年后AMD能抢4%的AI显卡市场NVIDIA仍占67% 5年后AMD能抢4%的AI显卡市场

    英伟达总市值逼近4.5万亿美元#英伟达 这两年来ai领域最大的赢家并非微软、谷歌或openai,而是nvidia。凭借在ai gpu领域的绝对主导地位,nvidia不仅实现了业绩的爆发式增长,更在近期将公司市值推向了约4.5万亿美元的历史新高。 在AI显卡市场,NVIDIA几乎处于垄断地位。尽管不同…

    2026年9月26日 • 用户投稿
    1100
  • CountDownLatch, CyclicBarrier, Semaphore 的使用场景与区别

    CountDownLatch, CyclicBarrier, Semaphore 的使用场景与区别CountDownLatch, CyclicBarrier, Semaphore 的使用场景与区别CountDownLatch, CyclicBarrier, Semaphore 的使用场景与区别CountDownLatch, CyclicBarrier, Semaphore 的使用场景与区别

    CountDownLatch用于主线程等待其他线程完成操作,CyclicBarrier用于多线程相互等待至屏障点后集体执行,Semaphore用于控制并发访问资源的线程数量。 CountDownLatch, CyclicBarrier, Semaphore 都是并发编程中用于线程同步的工具,但它们的…

    2026年9月26日 • 用户投稿
    500
  • sublime如何创建自己的代码片段_sublime自定义代码片段教程

    sublime如何创建自己的代码片段_sublime自定义代码片段教程sublime如何创建自己的代码片段_sublime自定义代码片段教程sublime如何创建自己的代码片段_sublime自定义代码片段教程sublime如何创建自己的代码片段_sublime自定义代码片段教程

    在Sublime Text中创建自定义代码片段可提升编码效率。1. 通过Tools → Developer → New Snippet…打开模板;2. 编辑content、tabTrigger、scope和description字段,如设置html5触发HTML5结构;3. 保存为.ht…

    2026年9月26日 • 用户投稿
    000
  • DDR5内存超频指南:芝奇幻锋戟6400MHz稳定性测试

    DDR5内存超频指南:芝奇幻锋戟6400MHz稳定性测试DDR5内存超频指南:芝奇幻锋戟6400MHz稳定性测试DDR5内存超频指南:芝奇幻锋戟6400MHz稳定性测试DDR5内存超频指南:芝奇幻锋戟6400MHz稳定性测试

    ddr5内存可以超频到6400mhz,但需要仔细调整和测试以确保稳定性。1.选择适合超频的ddr5内存条时,优先考虑芝奇幻锋戟系列,选择标有“oc”标签且规格接近目标频率的产品。2.在bios中将频率设为6400mhz,从宽松时序如cl36-36-36-76开始调整,并设定电压在1.25v到1.35…

    2026年9月26日 • 用户投稿
    000
  • 基于Quarkus的云原生Java开发:启动时间低于0.5秒的实践方案

    基于Quarkus的云原生Java开发:启动时间低于0.5秒的实践方案基于Quarkus的云原生Java开发:启动时间低于0.5秒的实践方案基于Quarkus的云原生Java开发:启动时间低于0.5秒的实践方案基于Quarkus的云原生Java开发:启动时间低于0.5秒的实践方案

    Quarkus通过GraalVM Native Image预编译实现启动时间低于0.5秒,需配置pom.xml插件、优化依赖、使用Quarkus CLI并监控调优。 Quarkus通过预编译和GraalVM Native Image等技术,让Java应用在云原生环境中拥有极低的启动时间和内存占用。本…

    2026年9月26日 • 用户投稿
    500
  • 如何用WPS转换PDF为Word_WPS PDF转Word格式转换操作教程

    如何用WPS转换PDF为Word_WPS PDF转Word格式转换操作教程如何用WPS转换PDF为Word_WPS PDF转Word格式转换操作教程如何用WPS转换PDF为Word_WPS PDF转Word格式转换操作教程如何用WPS转换PDF为Word_WPS PDF转Word格式转换操作教程

    使用WPS在线工具可直接上传PDF并转为Word,适合临时处理;2. WPS桌面版支持批量高精度转换,操作简便;3. 手机端WPS应用实现移动端快速转换与分享;4. 已打开PDF时可通过内置插件一键转为Word,提升效率。 如果您需要将PDF文件转换为可编辑的Word文档,WPS提供了便捷的转换功能…

    2026年9月26日 • 用户投稿
    000
  • JavaAI实战:基于DeepLearning4j实现目标检测模型部署

    JavaAI实战:基于DeepLearning4j实现目标检测模型部署JavaAI实战:基于DeepLearning4j实现目标检测模型部署JavaAI实战:基于DeepLearning4j实现目标检测模型部署JavaAI实战:基于DeepLearning4j实现目标检测模型部署

    答案:在Java中通过DeepLearning4j部署目标检测模型需完成模型转换、数据预处理、推理执行和结果解析。首先利用KerasModelImport或ONNX将TensorFlow/Keras模型转为DL4J兼容格式,注意版本匹配与层兼容性;接着通过NativeImageLoader加载图像并…

    2026年9月26日 • 用户投稿
    600
  • 多模态输入的限制有哪些 输入内容类型与格式注意事项

    多模态输入的限制有哪些 输入内容类型与格式注意事项多模态输入的限制有哪些 输入内容类型与格式注意事项多模态输入的限制有哪些 输入内容类型与格式注意事项多模态输入的限制有哪些 输入内容类型与格式注意事项

    多模态输入是人工智能领域令人兴奋的发展方向,它赋予机器同时处理和理解多种信息类型的能力,例如将视觉、听觉与文本信息相结合。这项技术极大地扩展了人机交互的可能性。然而,如同任何新兴技术,多模态输入并非没有其固有挑战和局限性。了解这些限制以及如何恰当地准备输入内容,对于有效利用多模态系统的潜力至关重要。…

    2026年9月26日 • 用户投稿
    000
  • K8s为啥要启用bridge-nf-call-iptables内核参数?用案例给你讲明白!

    使用 kubernetes 遇到最多的 70%问题都可以归于网络问题,最近发现如果内核参数: bridge-nf-call-iptables设置不当的话会影响 kubernetes 中 node 节点上的 pod 通过 clusterip 去访问同 node上的其它 pod 时会有超时现象,复盘记录…

    2026年9月26日
    100
  • 多模态AI能否理解视频内容 视频处理能力分析与使用建议

    多模态AI能否理解视频内容 视频处理能力分析与使用建议多模态AI能否理解视频内容 视频处理能力分析与使用建议多模态AI能否理解视频内容 视频处理能力分析与使用建议多模态AI能否理解视频内容 视频处理能力分析与使用建议

    多模态AI处理视频是一个涉及多个数据流融合的技术领域。本文旨在探讨多模态AI如何理解视频内容,分析其当前的处理能力,并提供一些使用上的建议,帮助读者更好地认识和应用这项技术。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 多模态AI理解视频…

    2026年9月26日 • 用户投稿
    400
  • vivo浏览器如何设置电脑版UA_vivo浏览器切换电脑版网页标识方法

    vivo浏览器如何设置电脑版UA_vivo浏览器切换电脑版网页标识方法vivo浏览器如何设置电脑版UA_vivo浏览器切换电脑版网页标识方法vivo浏览器如何设置电脑版UA_vivo浏览器切换电脑版网页标识方法vivo浏览器如何设置电脑版UA_vivo浏览器切换电脑版网页标识方法

    可通过修改用户代理(UA)标识使vivo浏览器访问电脑版网页。首先尝试在设置中将UA标识切换为“Desktop”模式;若不支持,可手动输入电脑版UA字符串;还可安装UA切换插件实现一键切换,刷新页面后即可加载桌面版网站内容。 如果您在使用vivo浏览器时希望访问电脑版网页,但页面自动跳转至移动版,可…

    2026年9月26日 • 用户投稿
    400
  • 请描述Java的内存区域(运行时数据区)

    请描述Java的内存区域(运行时数据区)请描述Java的内存区域(运行时数据区)请描述Java的内存区域(运行时数据区)请描述Java的内存区域(运行时数据区)

    Java运行时数据区分为程序计数器、Java虚拟机栈、本地方法栈、Java堆和方法区,其中堆和方法区为线程共享,其余为线程私有;程序计数器记录线程执行位置,虚拟机栈管理方法调用的栈帧,本地方法栈服务Native方法,堆存放对象实例并由GC管理,方法区存储类元数据和常量池;JDK 8后方法区由元空间替…

    2026年9月26日 • 用户投稿
    100
  • 小红书动态无法点赞怎么办

    小红书动态无法点赞怎么办小红书动态无法点赞怎么办小红书动态无法点赞怎么办小红书动态无法点赞怎么办

    先检查账号状态、网络环境及客户端问题。确认账号无违规、笔记可推广,避免异常操作;刷新登录、切换网络、清缓存、更新App;换设备测试排除风控,禁用多开软件;若均无效,联系客服解决。 小红书动态无法点赞,通常由账号状态、网络环境或客户端问题引起。可以按以下步骤逐一排查解决。 检查账号与内容状态 账号或发…

    2026年9月26日 • 用户投稿
    500
  • 苹果最新的耳机是什么型号

    苹果最新的耳机是什么型号苹果最新的耳机是什么型号苹果最新的耳机是什么型号苹果最新的耳机是什么型号

    苹果于 2022 年 9 月发布了 AirPods Pro 2,其主要功能包括:改进的主动降噪 (ANC)自适应透明模式个性化空间音频触控控制H2 芯片提供更好的声音质量和更长的电池续航时间耐汗和防水 (IPX4)ANC 开启时可播放长达 6 小时,配合充电盒可播放长达 30 小时 苹果最新耳机型号…

    2026年9月26日 • 用户投稿
    100
  • windows怎么查看事件日志_事件查看器使用与日志分析方法

    windows怎么查看事件日志_事件查看器使用与日志分析方法windows怎么查看事件日志_事件查看器使用与日志分析方法windows怎么查看事件日志_事件查看器使用与日志分析方法windows怎么查看事件日志_事件查看器使用与日志分析方法

    答案:通过事件查看器可排查Windows系统错误。打开eventvwr.msc,浏览系统、应用程序和安全性日志,筛选错误或警告事件,导出.evtX文件分析,并根据事件ID查询解决方案。 如果您在使用Windows系统时遇到系统错误、应用程序崩溃或安全相关的问题,可以通过事件日志来排查异常行为。事件查…

    2026年9月26日 • 用户投稿
    600
  • Firefox浏览器电脑版下载 火狐手机版官方安装包

    Firefox浏览器电脑版下载 火狐手机版官方安装包Firefox浏览器电脑版下载 火狐手机版官方安装包Firefox浏览器电脑版下载 火狐手机版官方安装包Firefox浏览器电脑版下载 火狐手机版官方安装包

    Firefox浏览器官方下载地址为https://www.mozilla.org/zh-CN/firefox/new/,提供电脑版与手机版安装包;其核心功能包括标签式浏览、弹出窗口拦截、追踪器屏蔽、跨设备数据同步及密码加密存储等。 Firefox浏览器电脑版下载、火狐手机版官方安装包在哪里?这是不少…

    2026年9月26日 • 用户投稿
    200
  • DeepSeek能做代码生成吗 使用DeepSeek进行编程任务的能力测试

    DeepSeek能做代码生成吗 使用DeepSeek进行编程任务的能力测试DeepSeek能做代码生成吗 使用DeepSeek进行编程任务的能力测试DeepSeek能做代码生成吗 使用DeepSeek进行编程任务的能力测试DeepSeek能做代码生成吗 使用DeepSeek进行编程任务的能力测试

    本文将探讨名为DeepSeek的语言模型在代码生成领域的表现。针对“DeepSeek能做代码生成吗?”这一问题,我们将阐述其在编程任务上的能力,并模拟进行一次能力测试的描述,帮助读者了解DeepSeek作为编程助手的潜力及其适用场景。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量…

    2026年9月26日 • 用户投稿
    200
  • 可能是目前效果最好的开源生图模型,混元生图 3.0 来了

    可能是目前效果最好的开源生图模型,混元生图 3.0 来了可能是目前效果最好的开源生图模型,混元生图 3.0 来了可能是目前效果最好的开源生图模型,混元生图 3.0 来了可能是目前效果最好的开源生图模型,混元生图 3.0 来了

    腾讯混元最新发布并开源原生多模态生图模型——混元图像 3.0(hunyuanimage 3.0)! 模型参数规模高达 80B,是目前参数量最大的开源生图模型。 同时,HunyuanImage 3.0 将理解与生成一体化融合,也是首个开源工业级原生多模态生图模型,效果对标业界头部闭源模型,堪称目前开源…

    2026年9月26日 • 用户投稿
    400
  • 如何用Java制作个人任务提醒应用

    使用Java创建任务提醒应用,核心功能包括任务管理与定时提醒。2. 设计Task类封装标题、描述、截止时间与完成状态,用LocalDateTime处理时间。3. 任务存储于List中,通过ObjectOutputStream序列化实现持久化。4. 利用ScheduledExecutorService…

    2026年9月26日
    200

发表回复

登录后才能评论
关注微信