后端之道
文章平均质量分 77
后端语言的共同课:类型系统、内存管理、并发模型、抽象机制、错误处理。 把 Java、C++、Go 并排摆开,讲同一个问题在三门语言里各自怎么解、各自付什么代价。 语言会过时,问题不会。这里只写能带走的那部分。
操千曲而后晓声,观千剑而后识器。
OxYGC
后端与架构方向开发者,关注 Java、Spring Boot、云原生、分布式系统、Web3 与 AI 工程化落地。持续分享大模型、AI Agent、RAG、MCP、智能工作流,以及真实项目中的技术选型与实践心得。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[工程] PHP2Shell 漏洞解析:两条 PHP 内核 RCE,为什么应用层的防护全部失效
如果你只跑 Java/Go/Node,这次和你无关——但请把「依赖里有没有 PHP」加进资产清点,因为很多 CMS、老后台、内部工具是顺手挂的。升级 → 重启所有常驻 worker → 重建镜像 → 用php-fpm -v和 changelog 双确认,这四步少一步都等于没做。如果你管的是 8.1 及更老的分支:这次不要再单独讨论了,把它当成一次大版本升级的立项理由。如果你做检测:这次的流量形态和找 webshell 上传不是一类,标记单独用无判别力、php。原创 2026-10-31 01:15:00 · 745 阅读 · 0 评论 -
玩转 Java 权限体系 第五篇(实战·完):把授权判断搬出应用——Casbin、OpenFGA、Cerbos 的 Java 集成现状与灰度办法
当权限点从几百涨到几万、一次策略变更要同时发六个服务、审计追问这人凭什么看这条数据,每个应用自己判断一遍的形态就撑不住了。要搬走的不是代码,是决策权。这篇讲 PEP 与 PDP 分离到底分离了什么,Casbin、OpenFGA、Cerbos 三条路线的真实成本与 Java 官方 SDK 现状(逐条核到 Maven Central),PDP 挂了走 fail-open 还是 fail-closed,以及灰度迁移的做法。原创 2026-10-15 16:32:41 · 966 阅读 · 0 评论 -
[Java Framework] [Spring] SpringBoot整合SpringBatch
Spring Batch 是基于 Spring 的成熟批处理框架,具备事务管理、块处理、声明式 I/O、可重启与重试机制等特性,支持多数据库。通过简单配置即可实现任务调度与状态追踪,其核心组件包括 Job、Step 与 Tasklet。结合 Spring Boot 快速集成,只需添加依赖、配置数据源及 Job 配置类,即可完成“Hello World”示例,验证框架可用性。原创 2026-10-04 00:15:00 · 330 阅读 · 0 评论 -
[AI工程]Jev 决策模型第二篇:三原语、一次多问与置信度路由,从 Playground 到能上线的代码
本文聚焦于如何实操使用 systemone API,详解一次调用的骨架结构:state、model、questions 输入,返回 answers 与 usage。强调5个关键数值——价格($0.042/Mtok,仅计输入)、上下文预算(64k总+32k单题)、速率限制(1,200 rpm/250k tps)、输入类型(仅文本)及语言支持(英语为主)。指出官方文档分散,需综合多处才能判断是否可上线。提出三条接入路径:Playground试措辞 → curl验证 → SDK或裸HTTP进服务。重点讲解三原语选原创 2026-10-01 00:30:00 · 627 阅读 · 0 评论 -
[AI工程]Jev 决策模型第三篇:官方自己列了九种失败模式,它到底不能干什么
本文深入剖析Jev-1.13模型的官方缺陷清单,逐条拆解其九大失败模式:字面理解、数值不可靠、日期处理偏差、间接推理失效、无关信息干扰、对抗性注入、指令矛盾、恒等式不保、无法生成文本。强调其本质是“仅作结构化判断”的模型,不擅长算术、生成或解释,且存在“自信地答错”风险。建议将生成、算术、审计解释类任务交由LLM或代码处理,仅在明确判断场景使用,并严格过滤输入、校准指令。最终指出:技术选型应基于官方实证边界,而非营销话术,避免将“新范式”盲目写入架构评审。原创 2026-10-01 00:15:00 · 586 阅读 · 0 评论 -
[AI工程]Jev 决策模型第一篇:它到底是什么,凭什么和普通大模型不一样
Jev是TypeSafe推出的首个System One模型,不生成文本,而是输出带类型的决策与概率,颠覆了“一次调用返回可读文本”的传统假设。它适用于生产链路中的自动化判断,如工单分流、反欺诈等,核心优势在于结构化输出、低延迟、低成本及高可靠性。其定位并非替代编码助手,而是作为智能函数调用嵌入系统,推动机器间交互的智能化演进。原创 2026-09-30 00:15:00 · 801 阅读 · 0 评论 -
[AI工程] Spring AI 第廿一篇:存量 REST 接口的 MCP 化改造实录——工具从哪条路径注册、参数描述怎么写、身份怎么过去
存量REST接口MCP化改造需三步:先按读写性、幂等性、副作用与用户表达度四维度盘点接口,区分可开放工具;再理解三条注册路径——@Tool复用、@McpTool显式声明、手动构造SyncToolSpecification,其差异在参数传递与上下文注入;最后通过_meta传递身份信息,确保模型调用时具备完整上下文。关键在于描述清晰、权限分级、避免过度暴露,提升模型选工具准确率。原创 2026-09-29 00:30:00 · 765 阅读 · 0 评论 -
[AI工程] Spring AI 第二十篇: 把评估集回归挂进 CI——分层测试、通过率门禁、成本控制与失败归类
本文提出将评估集回归纳入CI流水线,构建四层测试体系:L1单元测试(Mock模型,验证逻辑)、L2集成测试(Testcontainers启动向量库)、L3评估集测试(真模型+批量评测,监控质量退化)、L4端到端测试(真实用户路径)。通过触发规则识别关键变更(如prompt、分块参数等),自动运行评估集,以“通过率门禁”阻断质量退化。结合成本监控与失败归类(模型漂移 vs 代码回归),实现可度量、可拦截的AI应用质量保障。原创 2026-09-29 00:15:00 · 929 阅读 · 0 评论 -
[AI工程] Spring AI 第十九篇:多 Agent 编排与 A2A——什么时候真该拆,工具箱太大用什么装,跨进程那层 Spring AI 到底给了什么?
本文探讨多 Agent 编排在 Spring AI 2.0.1 中的实践与挑战。指出拆分 Agent 需满足上下文预算、权限隔离、独立伸缩三条件,否则将引入链路复杂性。跨进程拓扑中,中心化编排最适业务场景;流水线需结构化输出,点对点协作难维护。针对工具箱规模化问题,Spring AI 新增 tool-search 全家桶(含 Lucene/向量索引),实现模型按需检索工具,避免 schema 爆炸。核心是:先用单 Agent + 动态工具集撑住,再依需拆分,跨进程通信依赖 MCP 或自研协议,补偿与可观测需原创 2026-09-28 00:30:00 · 843 阅读 · 0 评论 -
[AI工程] Spring AI 第十八篇:AI 应用的安全边界与权限传递——Prompt Injection 拦什么、ToolContext 信谁、写操作谁来确认
AI应用安全边界模糊,攻击面延伸至模型决策链。传统鉴权无法覆盖模型生成参数与工具调用场景,导致Prompt Injection、身份断链、指令伪造等风险。Spring AI 2.0.1 提供SafeGuardAdvisor关键词拦截,但仅能防简单匹配,无法识别语义或绕过字符变体,且可能误伤正常流程。真正防护需在工具层重审权限,结合ToolContext传递身份,强制人工确认关键操作,实现“模型不可信”下的安全闭环。原创 2026-09-28 00:15:00 · 535 阅读 · 0 评论 -
[AI工程]Spring AI 第十七篇:对话式 UX 重构——从 8 字段表单到多轮槽位填充,哪些环节真的值得改
本文探讨从传统8字段表单向多轮对话式UX重构的可行性与技术挑战。核心观点:仅当字段多、有依赖、用户难记忆时才值得改造;简单表单应保留。关键实践包括:用结构化输出(Record + Schema)实现精准槽位抽取,追问逻辑由代码控制而非模型生成,服务端负责状态管理与校验。强调2.0版本中ChatMemory已无get(conversationId, lastN)接口,需通过构造参数配置窗口大小。最终建议采用“对话填单+表单确认”混合模式渐进落地,避免盲目追求自然语言交互。原创 2026-09-27 00:25:26 · 362 阅读 · 0 评论 -
[AI工程]Spring AI 第十六篇:存量 Spring 系统的 AI 化路线图,四层从哪层开始叠最划算
存量系统AI化应从L1能力接入起步,优先确保结构化输出合格率、延迟与成本可度量,并完成供应商替换演练。每层需独立验收:止步层由“拿掉AI流程仍可运行”决定,错误成本高则禁用写操作。推荐“顺次叠、跳着做、倒着验”——可跳过L2直连L3只读,但必须补足评测集。最终目标不是全栈上AI,而是在可控风险下,以最小代价实现最大业务价值。原创 2026-09-27 00:24:28 · 303 阅读 · 0 评论 -
[AI工程] Spring AI 第七篇:结构化输出与初代 Tools 实现
本文详解 Spring AI 2.0 结构化输出的实战应用,解决大模型自然语言输出在 Java 业务中“不可用”问题。通过 entity()、responseEntity() 及 ParameterizedTypeReference 实现精准类型转换,结合 validateSchema() 与 useProviderStructuredOutput() 两大开关,确保输出合规可消费。以智能票务助手为例,实现从对话到退票服务的端到端自动化,让模型真正参与企业流程。原创 2026-09-22 06:49:38 · 318 阅读 · 0 评论 -
[AI工程] Spring AI第五篇: Advisor对话拦截的使用和自定义2.0
Spring AI 2.0 引入强大的 Advisors 机制,解决大模型调用“黑盒”难题。通过 CallAdvisor 与 StreamAdvisor 分离设计,支持日志、校验、重读等切面逻辑。内置 SimpleLoggerAdvisor 可清晰追踪请求响应,自定义 Advisor 如“重读策略”可实现答案复核。基于 getOrder() 控制执行顺序,支持递归调用,助力开发者高效调试与增强 AI 交互。原创 2026-09-21 11:45:00 · 636 阅读 · 0 评论 -
[AI工程] Spring AI第四篇:提示词使用与设置技巧(2.0)
本文解析大模型效果不佳的根源——非模型能力不足,而是提示词设计缺陷。通过Spring AI 2.0,系统阐述如何用Message分角色构建上下文、用PromptTemplate动态注入参数、自定义分隔符避免冲突,并将长提示词文件化管理。强调提示词应明确任务、结构与格式,实现从“让模型猜”到“给模型清晰指令”的转变,提升AI应用可复用性与稳定性。原创 2026-09-21 06:00:00 · 507 阅读 · 0 评论 -
[AI工程] Spring AI 专题开篇:15 篇讲完 2.0 的提示词、RAG、MCP 与 Agent
Spring AI 2.0发布后,旧有1.x代码大量失效,官方文档按API组织,难以应对实际工程问题。本文专题聚焦“上线视角”,以15篇内容从最小可用客户端到Agent编排,系统解决版本断层、问题导向学习与工程化缺失三大痛点。涵盖提示词、RAG全链路、MCP复用、可观测性及五种Agent模式,强调生产可用性与可维护性,帮助开发者跳过踩坑陷阱,快速构建稳定高效的AI应用。原创 2026-09-26 05:15:00 · 404 阅读 · 0 评论 -
[AI工程] Spring AI 第十五篇(Spring AI Agent Utils): Claude Code 的那套工具箱,被人在 Java 里重写了一遍
摘要(148字): Spring AI Agent Utils(0.12.0)是社区孵化项目,将Claude Code的核心工具链重写为Spring AI的@Tool组件,支持文件操作、命令执行、grep、Web搜索等能力。它提供技能管理、任务编排与跨会话记忆,助力Java开发者构建真正能“干活”的Agent。虽非官方组件,但可灵活对接千问、OpenAI等模型,实现安全可控的智能体工作流。适合需自主控制工具链的Agentic应用,与Spring AI Alibaba框架形成互补。原创 2026-09-20 11:30:00 · 554 阅读 · 0 评论 -
[AI工程] Spring AI 第十四篇:Agent 五种模式在 2.0 里怎么写
本文详解Spring AI 2.0中Agent的五种核心编排模式:Chain、Parallelization、Routing、Orchestrator-Workers与Evaluator-Optimizer,结合实战Java代码说明其适用场景与常见陷阱。强调“是否用Agent”的关键在于任务不确定性是否值得交由模型决策,而非盲目引入智能体。通过对比工作流(Workflow)与Agent的本质差异,指出应避免在流程固定或简单逻辑中滥用Agent,推荐在任务分解依赖中间结果时使用,并提供Spring AI 2.原创 2026-09-19 13:19:11 · 354 阅读 · 0 评论 -
[AI工程] Spring AI 第十二篇:RAG 评测与幻觉防线
RAG系统上线后,模型仍会因“有据不读”“无中生有”“张冠李戴”等事实性错误出错,根源在于检索到资料≠准确回答。本文通过Spring AI内置的FactCheckingEvaluator与RelevancyEvaluator实现可量化的评测:精准提取上下文、校验事实支持度、评估相关性,并结合StructuredOutputValidationAdvisor构建闭环优化。关键在正确构造EvaluationRequest,确保判卷依据来自dataList,避免常见参数混淆。评测不仅用于回归测试,更可集成至线上监原创 2026-09-25 06:30:00 · 553 阅读 · 0 评论 -
[AI工程] Spring AI 第十一篇:基于航空智能客服的RAG 实战
本文详解航司客服系统中RAG、Tools与会话记忆的集成实践,聚焦1.0→2.0迁移痛点:向量库改用builder构造、@Tool注册规范、Advisor执行顺序及多租户记忆隔离。通过离线ETL灌库与在线多路协同链路设计,实现政策查询(RAG)、订单状态(Tools)与操作执行(工具调用)的无缝衔接。附完整代码与迁移对照表,支持Naive与Modular双模式切换,确保系统可落地、可维护。原创 2026-09-24 01:50:04 · 412 阅读 · 0 评论 -
[AI工程] Spring AI 第十篇:RAG 全链路讲解-从 ETL、Modular RAG 到重排序
本文系统解析RAG(检索增强生成)在解决非结构化知识查询中的核心作用,厘清其与Tools、微调的边界。通过完整链路拆解:向量模型选型(如DashScope、Ollama)、向量库部署(Milvus/PgVector等)、ETL管道构建及四阶段可插拔流程,强调“语义检索”依赖高质量Embedding与一致维度。重点指出:真实业务中,文档更新频繁、多租户权限隔离、长文本成本控制等问题,使RAG成为企业知识库的首选方案,且与Tools天然串行互补。2.0版本强化了检索链路稳定性与配置规范性,纠正过时模型名与实践误原创 2026-09-24 01:44:05 · 624 阅读 · 0 评论 -
[AI工程] Spring AI 第九篇:MCP 实现、原理、源码读与鉴
MCP协议解决跨应用、跨语言工具复用难题,通过JSON-RPC统一接口实现工具标准化。相比@Tool的进程内调用,MCP支持多语言、远程服务与企业级共享,具备工具、资源、提示词三类原语。Spring AI 2.0采用三层架构,推荐使用Streamable-HTTP传输,避免过时的SSE;STDIO适合本地调试,Stateless模式则牺牲双向通信能力。正确配置与选型对稳定性至关重要,尤其注意Stateless下工具消失的隐性风险。原创 2026-09-23 12:36:55 · 548 阅读 · 0 评论 -
[AI工程] Spring AI 第八篇:Tools_function-call使用+原理+7大痛点
Spring AI 2.0 引入的 Tool Calling 机制,核心是让大模型“能动手”而非仅“会思考”。通过 ToolCallingAdvisor 将工具调用循环移入链式拦截器,实现工具、RAG、日志等组件统一可插拔。支持三种工具定义方式,强调模型需原生支持 tool_calls 协议。一次调用可能引发多轮往返,带来延迟与 token 成本上升。关键优势在于 ToolContext 可安全传递敏感上下文(如 tenantId),避免模型越权。但需警惕工具数量膨胀带来的性能损耗,以及框架内部循环逻辑对顺原创 2026-09-23 06:45:00 · 725 阅读 · 0 评论 -
[AI工程] Spring AI第六篇: 对话记忆—数据库和Redis不同的实现
大模型无状态导致对话记忆丢失,Spring AI 2.0 通过 ChatMemory 体系实现多轮对话。核心为 MessageWindowChatMemory,结合 ChatMemoryRepository 实现记忆持久化。支持内存、JDBC、Redis、Cassandra 等多种存储方案,可按用户隔离(CONVERSATION_ID),并配置消息窗口大小。生产环境推荐使用数据库或 Redis,避免重启丢失。未来将推出基于事件溯源的 Session API,ChatMemory 或将被弃用。原创 2026-09-22 06:30:00 · 471 阅读 · 0 评论 -
[AI工程] Spring AI第三篇: 2.0实战,多模型、流式输出与工具调用怎么写?
Spring AI 2.0 引入 ChatClient 作为高层统一接口,替代直接使用 ChatModel,支持系统提示、对话记忆、流式输出、工具调用与多模型动态切换。通过 Builder 构建,可集中配置默认系统提示、温度、日志、记忆及工具,实现代码整洁与能力复用。defaultTools() 与 tools() 语义不同,前者全局生效,后者追加;多模型场景下(如 DeepSeek、Ollama)可通过显式注入实现灵活路由,提升开发效率与可维护性。原创 2026-09-20 07:30:00 · 423 阅读 · 0 评论 -
[AI工程] Spring AI第一篇:2.0 到底升级了什么?从 Prompt、RAG、MCP 到 Agent 应用实战
这两年 Java 开发者做 AI 应用,已经不只是调一个大模型接口这么简单了。企业数据怎么接入?工具怎么调用?RAG 怎么拆模块?Agent 工作流怎么控制? 如果项目本身就是 Spring Boot,那么 [Spring AI](https://spring.io/projects/spring-ai) 值得重点关注。它不是训练模型的框架,而是把企业数据、业务 API 和 AI 模型连接起来的应用框架。Spring AI 2.0 的变化尤其大:升级到 Spring Boot 4 基线,同时重构了 M原创 2026-09-18 07:00:00 · 1049 阅读 · 0 评论 -
[RabbitMQ] 最新版本深度解析:4.0+ 新特性、性能飞跃与生产实践(2025 年更新)
摘要:RabbitMQ 4.0+ LTS版本(2024-2025年发布)带来重大升级,包括:Streams 2.0实现100,000+ msg/s高吞吐流处理;Quorum Queue优化启动速度、内存占用和选举机制;Kubernetes Operator 2.0简化云原生部署;以及增强的Prometheus监控和OpenTelemetry支持。性能测试显示吞吐提升50-230%,内存占用降低31%。建议新项目直接采用4.0+,老项目逐步迁移至Quorum Queue,并遵循官方生产检查清单确保稳定部署。该原创 2025-10-22 19:41:51 · 2515 阅读 · 0 评论 -
[Java框架] 用 Java25 + Spring Boot 写个“中秋许愿池”:百万用户并发许愿,稳如满月!
🌟 引言:程序员的中秋,不止有月饼✨ 项目概述: 用户提交愿望 → 系统存入数据库 → 实时返回“月神祝福”🚀 支持 100 万用户同时许愿,不卡顿、不宕机、内存占用 < 1GB!这背后的核心技术,正是 Java 25 的虚拟线程(Virtual Threads) 与 Spring Boot 的深度集成。今天,我们就从零开始,用最前沿的 Java 技术,过一个“硬核又浪漫”的中秋!📂 项目地址: GitHub1.2 项目相关配置在 application.yml 中开启虚拟线程支持原创 2025-10-06 05:30:00 · 1708 阅读 · 0 评论 -
[Java框架] 2分钟Quarkus快速入门
Quarkus 官网这样描述道:相比较springboot:空框架项目 21MB 启动速度0.9sQuarkus框架项目大概 16MB启动速度0.45S,没有绝对的优势很难拓宽市场。原创 2025-09-04 06:45:00 · 1009 阅读 · 0 评论 -
[玩转Golang] 2分钟实现一个gRPC服务
/生成xx.pd.go的文件路径proto";// 定义服务// 请求消息// 响应消息创建项目目录 -> 创建go.mod的模块依赖 -> 创建xxx.proto文件生成proto的go代码 -> 编写server业务 -> 编写client业务。原创 2025-09-02 06:45:00 · 552 阅读 · 0 评论 -
[玩转Java] Java21之后还有哪些特性值得期待
Java 21后版本新特性概览 Java持续演进,22和23版本带来多项重要更新。JDK 22引入G1垃圾收集器区域固定(JEP 423)、外部函数与内存API(JEP 454)实现更安全的本地交互,支持未命名变量(JEP 456)和多文件直接运行(JEP 458)。JDK 23则优化了模式匹配(JEP 455)、提供类文件API(JEP 456),新增Markdown文档支持(JEP 467)和向量API(JEP 469)。其他改进包括结构化并发(JEP 480)、作用域值(JEP 481)和灵活的rec原创 2025-09-01 06:45:00 · 1174 阅读 · 0 评论 -
[玩转Java] 换成Java17后还能玩得转吗
Java8到Java17 主要是Http以及文本解析相关语法的改进,利好外部内容抓取,以及支持打包方式的改进,老主线任务GC机制的改进等等。原创 2025-08-22 11:25:38 · 840 阅读 · 0 评论 -
[玩转Java] Predicate的妙用
Java中,Predicate接口是一个函数式接口,它被用来表示一个接受单个输入参数并返回布尔值结果的条件或谓词。Predicate接口的常见用途主要集中在流操作和集合处理上,但它的应用场景非常广泛。以下是Predicate的几个妙用示例原创 2024-10-23 16:49:41 · 865 阅读 · 0 评论 -
[Java框架] Java常用爬虫框架推荐
截止 2023年9月份 Star数量27.7KSelenium是一款基于浏览器自动化的工具,它可以模拟用户在浏览器上的操作行为,并获取网页上的内容。Selenium支持多种浏览器,可以很好地处理JavaScript生成内容。但是Selenium相较于其他框架而言,运行速度较慢。截止 2023年9月份 Star数量10.9KWebMagic是一款基于Java的分布式爬虫框架,它使用了多线程和异步IO等技术,可以高效地爬取网站数据。WebMagic提供了丰富的插件机制,支持自定义解析器、处理器等功能。原创 2023-09-30 23:21:24 · 7471 阅读 · 0 评论 -
[云原生] [kubernetes] 在kubesphere上部署服务
KubeSphere 是在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大减轻开发、测试、运维的日常工作的复杂度,旨在解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。原创 2022-11-06 06:30:00 · 743 阅读 · 0 评论 -
[设计模式] 责任链模式校验下单参数
顶层抽象类必要非空参数校验必要非空参数校验测试类。原创 2022-10-24 01:00:00 · 600 阅读 · 1 评论 -
[Redis] 使用Redis限制短信发送次数和发送频率
使用Redis实现比如 一小时内允许用户发送5次短信,一天内允许用户发送10条短信的需求,改需要怎么做呢。原创 2022-10-22 16:39:15 · 3190 阅读 · 0 评论 -
[Java Framework] [Spring] Spring中RestTemplate中几种常见的请求方式
get和post请求适合用在不许要校验直接获取的接口, 如果想获取http协议报文的内容可以使用 xxxForEntity,如果只关注传输数据本身可以使用xxxForObjecDELETE ,HEAD, OPTIONS 可以补充部分信息EXCHANGE 使用频率较高EXECUTE 上面所有方法的最后执行都是调用的该方法执行。原创 2022-10-20 02:44:54 · 1159 阅读 · 4 评论 -
[效率] 后端工程师提升开发效率神器推荐
一些后端工程师除了写代码还要做一些运维部署的工作, 掌握各种生产力工具, 是很有必要的。但笔者发现很多开发中的工具有这样一个特点:百分之80的工具我们只用到它百分之20功能, 我们常常会遇到这种情况, 连接服务器时候一边SSH客户端输入命令,然后开着FTP客户端上传文件,最后在再开个监控软件看服务器cpu 内存的变化状态~ 虽然最后可以解决问题但是在效率上还是有很大的提升空间!很多工具谈不上效率,只是解决了能“做得到”的问题,飞速发展的今天“做的好”才是我们该追求的。什么才是一个好的有效率的工具呢?原创 2022-10-19 18:30:20 · 1933 阅读 · 22 评论 -
[Java Base] 类,接口,枚举,静态常量到底应该放在哪?
静态常量什么时候适合放在类中?什么时候适合放在接口中?什么时候适合放在枚举中呢?放在不同的type中会引发什么不良后果呢?本篇就来解析一下~常量类应该是final,不变的,而接口里的参数是final,也是不变的。那么,看起来接口是放常量没有一定问题,还省去了final的输入,非常的合适。但是,类是只能单继承的,接口是允许多实现的。要是类实现的多个接口出现重名的常量,会报错,必须要在实现类明确常量用的是哪个接口的。原创 2022-10-15 01:53:55 · 1604 阅读 · 0 评论
分享