lambda与匿名内部类 java和kotlin 对比

函数类型作为返回类型

函数类型也是有效的返回类型,也就是说可以定义一个能返回函数的函数

kotlin 实现方法是将一个函数直接作为返回值

kotlin 复制代码
fun main() {
   val getDiscountWords=configDisconuntWords()
    println(getDiscountWords("手机哈哈哈"))
}

fun  configDisconuntWords():(String)-> String{
    val currentYear=2027
    val hour:Int=(1..24).shuffled().last()
    return  {goodsName:String ->
        "$currentYear 年 , 双十一 $goodsName 促销倒计时 $hour 小时"
    }
}

lambda与匿名内部类

为什么要在代码中使用函数类型?函数类型能让开发者少写模式化代码,写出更灵活的代码。Java 8支持面向对象编程和lambda表达式但不支持将函数作为参数传给另一个函数或变量,不过Java的替代方案是匿名内部类

java 使用interface 配合匿名内部类实现

typescript 复制代码
import java.util.Random;

public class ClosureJavaClass  {
    public static void main(String[] args) {
        showOnBoard("洗发露",discountWords);
    }
    private  interface  DiscountWords{
        String getDiscountWords(String goodsName,int hour);
    }
    private  static  void  showOnBoard(String goodsName , DiscountWords discountWords){
        int hour=new Random().nextInt(24);
        System.out.println(discountWords.getDiscountWords(goodsName,hour));
    }

   static DiscountWords discountWords=new DiscountWords() {
        @Override
        public String getDiscountWords(String goodsName, int hour) {
            int  currentYear=2025;
            return String.format("%s年 双十一%s促销倒计时 %d 小时",currentYear,goodsName,hour);
        }
    };
}
相关推荐
alexhilton13 小时前
让架构边界变成可执行的测试
android·kotlin·android jetpack
数据治理自习室17 小时前
AI 应用评测体系(GraphRAG)
android·大数据·人工智能·kotlin
名剑走天下2 天前
Android 面试题大全
android·kotlin
chjif2 天前
Android 设备管控开发实战:自定义 Launcher 如何只显示指定 App?
android·kotlin
非凡ghost2 天前
用 Kotlin 和 Jetpack Compose 重写的安卓视频播放器,原生体验有多流畅?
android·java·kotlin·音视频·软件需求
名剑走天下2 天前
android 面试题
kotlin
蜡台3 天前
Jetpack Compose 稳定性、重组优化(Stable / @NonRestartableComposable)
android·kotlin·compose·jepack
JMchen1233 天前
Jetpack 内核实战(十):实战(下)——编辑页、全局设置与内存泄漏排查
kotlin·内存泄漏·android 实战·datastore 设置·jetpack 项目优化·编辑页开发
雨白4 天前
Kotlin 泛型基础:“万能魔法盒”的诞生
kotlin
小小测试开发4 天前
RAG评测:把忠实度、检索命中率、噪声敏感度做成可回归的流水线
人工智能·数据挖掘·回归·kotlin