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

学习开发之条件函数

在 Java 中,"条件函数" 这个概念通常不是一种特定的语法结构,而是指根据某些条件执行不同逻辑的函数或方法。你可以使用 if-elseswitch-case 等控制流语句来实现“条件判断”,也可以结合函数式编程特性(如 Lambda 表达式)来实现更灵活的条件处理。

下面我将从几个角度介绍 Java 中与“条件函数”相关的写法和用法:


一、基础:使用 if-else 实现条件逻辑

这是最基础也是最常见的“条件函数”写法:

public class ConditionExample {public static void main(String[] args) {int score = 85;String result = checkScore(score);System.out.println(result);}public static String checkScore(int score) {if (score >= 90) {return "优秀";} else if (score >= 80) {return "良好";} else if (score >= 60) {return "及格";} else {return "不及格";}}
}

二、使用 switch-case 实现多条件分支(适用于离散值)

适用于枚举、整数等离散值的判断:

public class DayGreeting {public static void main(String[] args) {int day = 3;System.out.println(getGreeting(day));}public static String getGreeting(int day) {switch (day) {case 1: return "星期一你好";case 2: return "星期二你好";case 3: return "星期三你好";default: return "无效的星期";}}
}

三、函数式接口 + Lambda 表达式(Java 8+)

可以使用函数式接口(如 Predicate, Function, BiFunction)来定义“条件函数”。

示例:使用 Predicate 判断条件

import java.util.function.Predicate;public class ConditionalFunctionExample {public static void main(String[] args) {Predicate<Integer> isPassing = score -> score >= 60;int score = 75;if (isPassing.test(score)) {System.out.println("通过");} else {System.out.println("未通过");}}
}

示例:使用 Function 根据条件返回结果

import java.util.function.Function;public class GradeEvaluator {public static void main(String[] args) {Function<Integer, String> evaluate = score -> {if (score >= 90) return "A";else if (score >= 80) return "B";else if (score >= 70) return "C";else return "D";};System.out.println(evaluate.apply(85)); // 输出 B}
}

四、策略模式模拟“条件函数”

当条件分支特别复杂时,推荐使用 策略模式(Strategy Pattern) 来替代复杂的 if-else 或 switch-case。

示例代码如下:

@FunctionalInterface
interface DiscountStrategy {double applyDiscount(double price);
}class DiscountService {private DiscountStrategy strategy;public void setStrategy(DiscountStrategy strategy) {this.strategy = strategy;}public double checkout(double price) {return strategy.applyDiscount(price);}
}public class StrategyExample {public static void main(String[] args) {DiscountService service = new DiscountService();// 普通会员折扣service.setStrategy(price -> price * 0.9);System.out.println("普通会员价格:" + service.checkout(100));// VIP 会员折扣service.setStrategy(price -> price * 0.8);System.out.println("VIP价格:" + service.checkout(100));}
}

五、自定义“条件函数”工具类

你也可以封装一个简单的条件判断工具类:

public class ConditionUtils {public static <T, R> R ifElse(T input, Predicate<T> condition, Function<T, R> trueFunc, Function<T, R> falseFunc) {return condition.test(input) ? trueFunc.apply(input) : falseFunc.apply(input);}
}// 使用示例
public class TestConditionUtils {public static void main(String[] args) {Integer num = 10;String result = ConditionUtils.ifElse(num,n -> n > 5,n -> "大于5",n -> "小于等于5");System.out.println(result); // 输出:大于5}
}

总结

方法场景特点
if-else基础条件判断简单直观
switch-case多个固定值判断可读性较好
函数式接口(PredicateFunction动态条件处理灵活、可复用
策略模式复杂业务逻辑解耦高内聚低耦合
工具类封装多种条件通用处理提高代码抽象层级
http://www.lryc.cn/news/584468.html

相关文章:

  • 二进制部署CentOS8.5+Kubernetes1.33.2+Docker28.3.1高可用集群
  • pdf_copy.ahk
  • 醋酸镨:闪亮的稀土宝藏,掀开科技应用新篇章
  • 软考(软件设计师)计算机网络-物理层,数据链路层
  • Android 如何阻止应用自升级
  • 如何使用python实现多个word文档格式进行修改
  • Android 15 Settings 搜索框:引入关键字过滤功能
  • uni-app X APP在线升级 解决【uni-upgrade-center-app】未配置uni-upgrade-center 问题
  • 20250710解决KickPi的K7的SDK编译异常:rk3576-android14.0-25250704.tar.gz【降低BUILD_JOBS】
  • 独立服务器选择Rocky Linux还是CentOS
  • 征程 6M 部署 Omnidet 感知模型
  • 微信小程序101~110
  • Kettle导入Excel文件进数据库时,数值发生错误的一种原因
  • 【大模型推理论文阅读】Enhancing Latent Computation in Transformerswith Latent Tokens
  • 【React】MQTT + useEventBus 实现MQTT长连接以及消息分发
  • Xavier上安装RTSP服务端教程
  • React封装过哪些组件-下拉选择器和弹窗表单
  • 虚拟项目[3D物体测量]
  • SpringBoot整合腾讯云新一代行为验证码
  • 【Note】Linux Kernel 实时技术深入:详解 PREEMPT_RT 与 Xenomai
  • 【TCP/IP】12. 文件传输协议
  • 堆的应用(讲解超详细)
  • 【AI大模型】LLM模型架构深度解析:BERT vs. GPT vs. T5
  • 基础 IO
  • 常见射频电路板工艺流程
  • 如何在VMware里的飞牛OS访问主机里面图片文件夹
  • C语言易错点整理(一)
  • 苍穹外卖—day1
  • Redis中BigKey的隐患
  • CMake指令:add_custom_command和add_custom_target详解