栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java Lambda表达式是否使用“隐藏”或本地包导入?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java Lambda表达式是否使用“隐藏”或本地包导入?

import
声明并不意味着声明您的代码正在使用什么类;他们只是声明用来解析不合格标识符的内容。因此,如果您
Path
在代码中使用了非限定标识符,则必须
importjava.nio.file.Path;
声明该标识符应解析为该限定类型。顺便说一下,这不是解析名称的唯一方法。名称也可以通过类继承来解析,例如,如果它们与继承的成员类的简单名称匹配。

如果隐式使用类型而不引用其名称,则不需要

import
声明,这不仅限于lambda表达式,它甚至不是Java 8的特殊功能。例如,

Files.walk(Paths.get("C:/Users/mbmas_000/Downloads/SEC Edgar"), 1)

您已经

Path
隐式使用了类型,因为它是的返回类型
Paths.get
和参数类型
Files.walk
,换句话说,您正在接收的实例
java.nio.file.Path
并将其传递给另一个方法而无需引用其类型名称,因此您不需要
import
。此外,您正在调用varargs方法,该方法接受任意数量的
FileVisitOption
实例。您没有指定任何内容,因此您的代码将创建一个零长度的
FileVisitOption[]
数组,并将其
Files.walk
再次传递给,而无需添加
import

通过改进的类型推断,还有一种可能使用类型而不引用其名称的可能性,例如,如果您调用:

Files.newByteChannel(path, new HashSet<>());

您不仅

FileAttribute[]
要为varargs参数创建一个零长度的数组,而不必按名称引用此类型,而且还要创建一个
HashSet<OpenOption>
OpenOption
按名称引用类型的a。因此,这也不要求import
java.nio.file.attribute.FileAttribute
java.nio.file.OpenOption


因此,最重要的是,是否需要an

import
不取决于类型的使用,而是取决于您是否通过其简单名称来引用它(并且有多种方法可以使用类型而不通过名称来引用它)。在第二个示例中,您将
Path
在方法中引用名称
printPath(PathpassedFilePath)
;如果将其更改为
printPath(ObjectpassedFilePath)
,则无需显式
import
的,一切都会再次起作用
java.nio.file.Path



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573750.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号