You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

局部类型推断下是否可省略部分import语句?

局部类型推断场景下的import语句优化

嘿,这个问题其实挺清晰的:当你在Test类里用var来接收Utility.getChannel()的返回值时,Test类里完全不需要导入AsynchronousSocketChannel这个类。

为啥会这样?

  • Java 10引入的var关键字是局部类型推断,编译器会自动根据右侧方法调用的返回值,推断出变量的具体类型,根本不需要你在代码里显式写出AsynchronousSocketChannel这个类型名称。
  • 咱们看修改后的Test类代码:
public class Test { 
    public static void main(String[] args) { 
        var channel = Utility.getChannel(); 
    } 
}

这里没有直接引用AsynchronousSocketChannel的类名,所以完全不需要在Test类里加对应的import语句。

要注意的点

  • 但Utility类里的import java.nio.channels.AsynchronousSocketChannel;可不能删!因为它的getChannel()方法明确声明了返回这个类型,必须导入才能正常编译。
  • 要是你不用var,还是老老实实地写AsynchronousSocketChannel channel = Utility.getChannel();,那Test类就必须导入这个类才行,不然编译器会报错找不到类型。

内容的提问来源于stack exchange,提问作者Jacob G.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:57:24