java 10 中使用局部变量类型推断的限制

2024-01-09

Java 10引入了局部变量类型推断特征JEP-286 http://openjdk.java.net/jeps/286.

我们可以使用局部变量类型推断var这是保留类型名称

但使用它有一些限制。

有人可以总结一下在哪些情况下我将无法使用 var 吗?


1.顾名思义,您只能将其用于局部变量。

2.局部类型推断不能用于没有初始值设定项的变量

例如下面的代码将不起作用

Case 1:

  var xyz = null;
            ^
  (variable initializer is 'null')

Case 2:

var xyz;
            ^
  (cannot use 'val' on variable without initializer)

Case 3:

   var xyz = () -> { };
            ^
  (lambda expression needs an explicit target-type) 

3.Var 不能用于在同一行实例化多个变量

可以找到更多详细信息here https://stackoverflow.com/questions/49154458/why-are-compound-definitions-using-var-not-allowed由空指针建议

   var X=10,Y=20,Z=30 // this is not allowed 

4:Var作为参数

   3.1 var would not be available for method parameters.

   3.2 Var would not be available for constructor parameters.

   3.3 Var would not be available for method return types.

   3.4 Var would not be available for catch parameters.

4. 数组初始值设定项不允许 更多详细信息可以通过找到here https://stackoverflow.com/questions/49134118/array-initializer-needs-an-explicit-target-type-why尼古拉推荐

var k = { 1 , 2 };
        ^   
(array initializer needs an explicit target-type)

5、方法参考不允许

var someVal = this::getName;  
 error: cannot infer type for local variable nameFetcher
  (method reference needs an explicit target-type)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 10 中使用局部变量类型推断的限制 的相关文章

随机推荐

  • 从 C# 的 PowerShell 脚本调用特定函数

    有没有办法从 C 代码的 PowerShell 脚本中调用特定函数 我已经启动并运行了使用 PowerShell 脚本执行字符串的基本示例 如果我有一个包含许多函数的文件 并且我只想将特定函数加载到 C 中并执行它 该怎么办 如何才能做到这
  • FileNotFoundError: [Errno 2] 没有这样的文件或目录: '/content/drive/MyDrive/Santillana/geckodriver' 在 Google Colab 中使用 Selenium 库

    我正在尝试在 Google Colab 中使用 Selenium 但是当我尝试运行 Firefox 实例时出现一些错误 我点击了这个链接 硒文档 https www selenium dev documentation webdriver
  • 新手在 Clojure 中转换 CSV 文件

    我对编程既是新手又是老手 大多数时候我只是在工作中编写很多小的 Perl 脚本 当我想学习 Lisp 时 Clojure 就出现了 所以我也想在不懂 Java 的情况下学习 Clojure 这很艰难 但到目前为止很有趣 我见过几个与我的问题
  • Spring Boot 3.x 升级。无法解析 org.springframework.boot:spring-boot-gradle-plugin:3.0.1

    我最近想将我的 kotlin 项目从 spring boot 2 7 x 升级到 3 0 1 我使用 Java 17 temurin gradle 7 6 在 IntelliJ 中 我在通过 gradle 导入项目时收到以下错误消息 A p
  • C 中的固定地址变量

    对于嵌入式应用 通常需要访问外设寄存器的固定存储位置 我发现执行此操作的标准方法如下所示 access register foo reg which is located at address 0x100 define foo reg in
  • UIPageViewController 内的 UINavigationController 具有垂直滚动、导航栏高度损坏

    我使用 UIPageViewController 来显示几个控制器 第一个是 UINavigationController 乍一看它看起来不错 但是当您滚动到下一个时 第一个导航栏会更改高度 并将标题直接放在状态栏下方 我已经搜索了堆栈溢出
  • 使用分段控制更改视图

    我需要使用分段控件更改视图 在下面的示例中 我将两个视图容器放在同一位置 第二个容器是隐藏的 每次使用分段控件时我都会通过代码显示它 虽然它也没有显示 import UIKit class ViewController UIViewCont
  • ClassCastException:java.lang.ClassCastException:android.widget.LinearLayout$LayoutParams 无法转换为 android.support.v4.widget.DrawerL

    我已经为导航抽屉编写了一个程序 该程序运行良好 但最近我尝试放置一个ImageView获取个人资料图片和TextView 之后它给了我一个ClassCastException main activity xml 当我删除LinearLayo
  • JavaScript 验证输入的日期

    我是新来的Javascript编程 我正在尝试验证输入的日期
  • ML 中 ref 函数的用法

    考虑到 ref 运算符 我很难理解它的应用以及以下指令的含义 1 在这个定义中我定义什么 val ref x ref 9 val x 9 int 2 我在这里用 ref x ref 12 做什么 val x ref 8 val x ref
  • 计算跨浏览器 iframe 高度

    我的 JavaScript 经验中最困难的问题之一是正确 即 跨浏览器 计算iframe 高度 在我的应用程序中 我有很多动态生成的 iframe 我希望它们都在加载事件结束时执行某种自动调整大小以调整其高度和宽度 如果是height计算我
  • 为什么不能在 osx 中原生安装 docker?

    我希望能够在 OSX 中的 Vagrant 之外使用 docker 目前这是不可能的 导致它不只限于linux安装的具体原因是什么 Docker 只是系统提供的容器之上的一个抽象和自动化层 技术限制是 OS X 不支持操作系统级虚拟化 ht
  • 如何添加添加图像作为下拉箭头?

    我创建了一个带有下拉箭头的应用程序 但箭头的尺寸太小 所以我决定放大箭头的大小 我需要添加图像而不是箭头 是否可以添加图像或调整箭头大小 我当前的 CSS 如下 custom select after content content siz
  • Play框架会话和cookie如何工作?

    play 如何验证 cookie 我注意到重新启动服务器后我仍然登录 即使我 不要在数据库中保存任何会话数据 我也注意到了 我可以将服务器上的日期设置为大于到期日 cookie 的日期 但我仍然登录 我退出了 将 cookie 保存到文本文
  • 简单文件上传返回NULL?

    我正在尝试在 MVC 5 中进行第一个简单的文件上传 我正在遵循我找到的一堆示例 但由于某种原因 在我的 创建 ActionResult 中 uploadFile 始终为 NULL 因此上传代码为从不运行 有人看到我可能做错了什么吗 Vie
  • 单独类库中数据注释的本地化

    我们正在尝试为我们的域模型实现本地化 这些模型存在于我们的解决方案中的单独的类库项目中 然而 我们无法让它工作 因为我们的模型数据注释属性根本没有被翻译 项目结构 Solution Web project 资源文件夹 包含 resx 文件
  • 如何制作一个永不结束的迭代器?

    我只是想知道无限期地迭代集合的最简单方法是什么 即当它到达末尾时next 调用第一个对象 我假设这不是 Java 中预定义的函数 所以只是寻找在 Java 中实现它的最简单方法 有一个方法很优秀谷歌收藏 https github com g
  • 如何使用 conda 或 virtualenv 在虚拟环境之间共享包?

    我有多个 python 项目 每个项目都有自己的虚拟环境 另外我有一个全局 python 环境 我想在虚拟 全局环境之间共享相同的包文件 而不需要多次复制它们 如果可能 Environment Packages GLOBAL A B C D
  • 在编译时完全枚举 D 维数组的索引

    为了测试一些多维结构 需要生成编译时多维索引以完全覆盖所有可能的情况 我寻找编译时廉价的方法来实现上述目的 我目前所做的 include
  • java 10 中使用局部变量类型推断的限制

    Java 10引入了局部变量类型推断特征JEP 286 http openjdk java net jeps 286 我们可以使用局部变量类型推断var这是保留类型名称 但使用它有一些限制 有人可以总结一下在哪些情况下我将无法使用 var