局部类型推断下是否可省略部分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.
相关产品推荐
相关产品推荐

