jdk10的var局部变量类型推理

news2024/11/26 21:25:44

注:本人参考了openjdk官网,由于openjdk是开源的,所以不存在侵权行为,本章只为学习,我觉得没有什么比官网更具有话语权
1、jdk10的var的类型推测:就是这种处理将仅限于具有初始值设定项的局部变量、增强型 -循环中的索引以及在传统 -循环中声明的局部变量;它不适用于方法形式、构造函数形式、方法返回类型、字段、捕获形式或任何其他类型的变量声明。允许在声明隐式类型 lambda 表达式的形式参数时使用var ,通过在枚举(泛型枚举)中允许类型变量,并对枚举常量执行更清晰的类型检查,增强 Java 语言中构造的表达能力enum

2、jdk10提出这个方案的原因:也是因为开发人员认为本地方法里面的类型声明通常被认为是不必要的,并且几乎所有其他流行的静态类型“大括号”语言,无论是在JVM上还是在JVM上,都已经支持某种形式的局部变量类型推断:C++(auto),C#(var),Scala(var/val),Go(声明)。Java 几乎是唯一一种没有接受局部变量类型推断的流行静态类型语言;在这一点上,这应该不再是一个有争议的功能

3、我举几个反例吧:
3.1、比如说这个静态变量,就会报错

package com.example.jdk10;

public class LocalVariable {
    public static void main(String[] args) {

    }
    var a=90;
}

img

3.2、方法返回类型也不能用var

img

4、在举个简单的正面例子(抛开那些简单的方法里面的局部推测)
隐式的lambada(至于lambada表达式里面的变量都是final类型,这种基础知识就不提了)

package com.example.jdk10;

import java.util.Arrays;
import java.util.List;

public class LocalVariable {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
        names.forEach((var name) -> System.out.println("Hello, " + name));
    }
    
}

4.1运行结果:

img

4.2 在枚举(泛型枚举)中使用类型变量

package com.example.jdk10;

public enum Foo {
    APPLE("red"), BANANA("yellow"), ORANGE("orange");

    private String color;

    Foo(String color) {
        this.color = color;
    }

    public String getColor() {
        return color;
    }
}

package com.example.jdk10;

public class LocalVariable {
    public static void main(String[] args) {
        var apple = Foo.APPLE;
        System.out.println(apple.getColor()); // 返回 "red"

        var banana = Foo.BANANA;
        System.out.println(banana.getColor()); // 返回 1
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1146729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android问题笔记四十三:JNI 开发如何快速定位崩溃问题

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

opencv 滤波与blob检测总结

参考&#xff1a;https://learnopencv.com/contour-detection-using-opencv-python-c/ import cv2 impory numpy as np image cv2.imread(rxxx.jpg) # Sobel Edge Detection sobelx cv2.Sobel(srcimg_blur, ddepthcv2.CV_64F, dx1, dy0, ksize21) # Sobel Edge Detection o…

Python程序设计期末复习笔记

文章目录 一、数据存储1.1 倒计时1.2 os库1.3 字符串操作1.4 文件操作1.5 列表操作1.6 元组1.7 字典 二、文本处理及可视化2.1 jieba分词2.2 集合操作2.3 pdf文件读取2.4 参数传递2.5 变量作用域 三、数据处理分析3.1 Sumpy3.2 Matplotlib3.3 Numpy 四、Pandas4.1 索引操作4.2 …

【算法|动态规划 | 01背包问题No.1】AcWing 426. 开心的金明

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【AcWing算法提高学习专栏】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&a…

Java Dubbo 微服务框架 HP-SOA

HP-SOA 功能完备&#xff0c;简单易用&#xff0c;高度可扩展的Java微服务框架。 【快速开始】 技术架构 技术集成 Web服务框架&#xff1a;spring-boot 3.x微服务框架&#xff1a;Dubbo 3.x服务注册中心&#xff1a;Nacos配置中心&#xff1a;Nacos服务治理中心&#xff1…

色彩校正及OpenCV mcc模块介绍

一、术语 1.光&#xff1a;是电磁波&#xff0c;可见光是可被人眼感知的电磁波。可见光大约在400-700nm波段。光子携带的能量与波长成反比&#xff0c;400nm--700nm之间的单色光的颜色从紫色渐变成红色。 2.光谱&#xff1a;除了太阳光源外&#xff0c;LED灯、白炽灯等各种照明…

基于Java的汉服文化平台网站设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

python随手小练10(南农作业题)

题目1&#xff1a; 编写程序&#xff0c;输出1~1000之间所有能被4整除&#xff0c;但是不能被5整除的数 具体操作&#xff1a; for i in range(1,1000): #循环遍历1~999&#xff0c;因为range是左闭右开if (i % 4 0) and (i % 5 ! 0) :print(i) 结果展示&#xff1a; 题目2&…

Docker:安装MySQL

Docker&#xff1a;安装MySQL 1. 部署MySQL2.部署多个MySQL服务 1. 部署MySQL 首先需要安装Docker&#xff0c;安装Docker地址&#xff1a;http://t.csdnimg.cn/utPGF 安装命令&#xff1a; docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT…

AMD Ryzen AI 暂仅支持 Windows,Linux 系统有望后续支持

近日消息&#xff0c;最新的 AMD Ryzen 7040 系列笔记本电脑配备了基于 Xilinx IP 的专用 AI 引擎&#xff0c;名为“Ryzen AI”&#xff0c;可以加速 PyTorch 和 TensorFlow 等机器学习框架的运行。不过目前这个 Ryzen AI 只支持微软 Windows 系统。但是如果有足够的客户需求&…

最新FL Studio 21.2中文版即将发布,2024年会有哪些新功能呢?

好消息&#xff01;FL Studio 21.2 在 10 月 26 日正式发布啦&#xff0c;它新增了 FL Cloud 在线采样库和 AI 音乐制作功能&#xff0c;还提供音乐分发到 Spotify、Apple Music 等主要音乐平台的服务。此外&#xff0c;还有新的音频分离功能、自定义波形颜色和新的合成器 Kepl…

SpringBoot 整合 Nacos 实现统一配置中心

目录 1. Nacos 功能 1.1 配置中心 2. SpringBoot 整合 Nacos 实现统一配置中心 2.1 Nacos 的部署安装 2.1.1 安装并启动 Nacos 2.1.2 开启Nacos控制台授权登录 2.1.3 将 Nacos 的数据源切换为 MySQL 2.2 实现配置中心 2.2.1 创建配置信息 2.2.2 SringBoot 使用配置中心…

雨云虚拟主机使用教程WordPress博客网站搭建教程

雨云虚拟主机(RVH)使用教程与宝塔面板搭建WordPress博客网站的教程&#xff0c;本文会讲解用宝塔面板一键部署以及手动安装两种方式来搭建WordPress博客&#xff0c;选其中一种方式即可。 WordPress WordPress是使用PHP语言开发的博客平台&#xff0c;用户可以在支持PHP和MyS…

mac文件夹无法写入 mac只能读取不能写入怎么解

mac用户在使用外接硬盘或U盘时&#xff0c;有时会遇到一个问题&#xff1a;mac文件夹无法写入&#xff08;只能读取不能写入&#xff09;&#xff0c;这种情况很让人头疼&#xff0c;因为无法对文件进行修改、删除或复制等操作。那么&#xff0c;mac文件夹无法写入的原因是什么…

基于Arduino的智能家居控制系统设计

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、系统总体设计方案本课题研究的内容&#xff08;一&#xff09;系统组成&#xff08;二&#xff09;硬件模块1.蓝…

python之拟合圆心及半径

目录 1、公式推导 2、代码实现 1、公式推导 2、代码实现 import matplotlib.pyplot as plt import numpy as np def Show_Fig(X,Y,x, y, r):theta np.arange(0, 2 * np.pi, 0.01)x x r * np.cos(theta)y y r * np.sin(theta)fig plt.figure()axes fig.add_subplot(111…

精讲双向链表的销毁

相信大家各位学习双向链表的时候对链表的销毁&#xff0c;都或多或少有些小疑惑&#xff0c;我到底是传一级指针还是传二级指针 木关系&#xff0c;这些都是小意思&#xff0c;今天我将为大家share 一下关于到底如何进行正确传指针 对于链表是销毁其实就是对链表进行一个结点一…

基于PHP的大学生考勤请假管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

Jupyter Notebook还有魔术命令?太好使了

在Jupyter Notebooks中&#xff0c;Magic commands&#xff08;以下简称魔术命令&#xff09;是一组便捷的功能&#xff0c;旨在解决数据分析中的一些常见问题&#xff0c;可以使用%lsmagic 命令查看所有可用的魔术命令 插播&#xff0c;更多文字总结指南实用工具科技前沿动态…

【赠书活动】从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…