Java 11 新特性 类型推断var在形参和lambda中

本文介绍了Java11中的新特性——类型推断var,它用于局部变量和lambda表达式,强调了var关键字的适用范围以及在lambda中显式指定类型的原因。通过示例展示了var的使用和类型确认。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 11 新特性 类型推断var

java 11 新特性

  1. 局部变量的类型推断 var (也可以用在lambda表达式中)

  2. var关键字仅适用于局部变量和lambda,我们是没办法在其他地方使用的,比如类的成员变量

  3. lambda表达式中的var

    为什么lambda中有时候要写类型 因为有的时候我们可能需要注释给参数
    
 // java 11 新特性
 
    @Test
    public void t8(){
        var str = "AAA";   //这里的str就是String类型的
        System.out.println(str.getClass());   //class java.lang.String
    }


    @Test
    public void t9() {

        Consumer<String> consumer = (var s) -> System.out.println(s);   //这里的s就是String类型的
//        Consumer<String> consumer = (@NotNull var s) -> System.out.println(s);   //这里的s就是String类型的
        consumer.accept("AAA");
    }
### C++ 中的 Lambda 表达式 Lambda 表达式提供了一种简洁的方法来创建匿名函数对象。这些表达式通常用于需要简单函数的地方,比如作为算法模板参数或事件处理程序。 #### 基本语法结构 一个典型的 lambda 表达式的定义如下: ```cpp [capture](parameters)->return_type { body } ``` - `capture`:指定如何捕捉外部变量到闭包环境。 - `parameters`:形参列表,类似于常规函数声明。 - `->return_type`:返回类型说明符(可选),如果省略编译器会自动推断。 - `{body}`:函数体内的语句集合。 #### 变量捕获方式 可以采用多种方法捕获上下文中的局部变量: - `[=]` 按值复制所有能访问得到的名字; - `[&]` 对所有名字取引用; - `[this]` 把当前类实例指针传入; - `[var]` 显式列出要拷贝的具体变量名; - `[&var]` 列出按引用传递给内部作用域使用的特定名称; #### 实际应用案例 下面展示了一个简单的例子,在此之中通过 lambda 计算两个整数之并输出结果[^1]: ```cpp #include <iostream> using namespace std; int main() { int a = 5, b = 6; auto f = [=]() { return a + b; }; // 使用 [=] 来按值捕获 a b cout << f() << endl; return 0; } ``` 另一个更复杂的场景展示了如何利用标准库 `<algorithm>` 的迭代工具配合 lambdas 完成操作向量容器内元素的任务[^2]: ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> vec = {1, 2, 3, 4, 5}; // 应用 for_each 函数以及无状态 lambda 打印每一个数值 for_each(vec.begin(), vec.end(), [](int x) { cout << x << " "; }); cout << endl; return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值