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

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");
    }
Java,如果形参声明为Object类型,但实际传入的是int类型的值,那么在方法内部,这个形参会被视为一个Object类型的对象。 当将int类型的值传递给Object类型形参时,Java会自动进行装箱操作,将int类型的值封装为Integer对象。因此,在方法内部,该形参将被当作Integer类型的对象来处理。 在方法内部,您可以对这个形参执行Object类的方法,也可以将其强制转换为其他类型(如Integer)进行进一步操作。请注意,在进行强制类型转换时,需要确保实际传入的值是兼容的,否则可能会出现ClassCastException异常。 下面是一个示例代码,演示了将int类型的值传入Object类型形参的情况: ```java public class Example { public static void main(String[] args) { int number = 10; printValue(number); } public static void printValue(Object obj) { // obj在方法内部被视为一个Object类型的对象 System.out.println("Value: " + obj.toString()); // 将obj强制转换为Integer类型 Integer integerObj = (Integer) obj; // 对Integer对象执行操作 int value = integerObj.intValue() + 5; System.out.println("Value + 5: " + value); } } ``` 在上面的示例,我们将int类型的值传递给了printValue方法的Object类型形参。在方法内部,我们首先通过toString方法将其转换为字符串进行输出,然后将其强制转换为Integer类型,并进行其他操作。 需要注意的是,如果传入的值不是兼容的类型(例如传入一个String类型的值),在进行强制类型转换时会引发ClassCastException异常。因此,在使用Object类型形参时,需要确保传入的值的类型是正确的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值