我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java Final与Effectively Final

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java Final与Effectively Final

1. 介绍

Java 8 引入的众多功能中,其中一个最有趣的功能是 effectively final。即不用 final 修饰符也能达到同样的效果。

本文将介绍该功能的起源以及编译器处理 effectively final 与 final 关键字的不同之处。此外,还会通过一个 effectively final 变量的问题案例给出解决方案。

2. Effectively Final 的起源

简而言之,如果对象或基础类型的变量在初始化后值不发生改变,则可以把它们看做 effectively final。只要不改变对象引用,即使引用的对象发生状态改变,该对象也是 effectively final。

在 Java 引入该功能之前,不能在匿名类中使用非 final 局部变量。此外,也不能在匿名类、内部类和 lambda 表达式中多次赋值。新功能的加入节省了为 effectively final 变量输入 final 关键字的工作。

匿名类是一种内部类,不能访问非 final 变量或 effectively final 变量,也无法按照 JLS 8.1.3 的规定在其封闭作用域内的变量进行修改。lambda 表达式也有类似的限制,修改变量可能会带来并发问题。

docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.1.3

3. Final vs Effectively Final

要确认一个 final 变量是不是 effectively final,最简单的办法就是删除 final 关键字看能否编译并运行:

Java Final与Effectively Final

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java Final与Effectively Final

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java Final与Effectively Final

1. 介绍Java 8 引入的众多功能中,其中一个最有趣的功能是 effectively final。即不用 final 修饰符也能达到同样的效果。本文将介绍该功能的起源以及编译器处理 effectively final 与 final 关
2023-06-02

java final本质解释

含义:final 含义是【仅可以被赋值一次】。赋值位置:在【声明时赋值】、在【构造方法中赋值】举例:package com.dada.data; public class TestFinal { // 1.声明时赋值 private final i
java final本质解释
2020-08-09

final在java是什么

final关键字的基本用法在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。
final在java是什么
2020-04-29

详解java中Static、final、Static final的各种用法

对Static、final、Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从容的回答...static加载:static在类加载时初始化(加载)完
详解java中Static、final、Static final的各种用法
2015-12-04

Java中final关键字和final的四种用法实例

final关键字代表最终的、不可改变的,下面这篇文章主要给大家介绍了关于Java中final关键字和final的四种用法实例,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
2023-02-06

怎样用Java final 关键字

怎样用Java final 关键字,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。下面好好地讲一讲 final 关键字,也希望给更多的小伙伴一些帮助。尽管继承可以让我们重用现有代
2023-06-03

Java中final、finally、finalize的区别

final、finally和finalize的区别:1、功能的区别;2、用法的区别;3、应用场景的区别;final关键词主要用于声明某个变量、方法或类是不可变的;finally关键词主要用在异常处理中;finalize是Object类的一个方法,用于清理资源。
Java中final、finally、finalize的区别
2023-10-29

Java中final如何使用

这篇“Java中final如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java中final如何使用”文章吧。一、理
2023-06-30

java中final的功能有哪些

在Java中,final关键字有以下功能:1. 声明一个不可变的变量:当使用final关键字声明一个变量时,该变量的值不能被改变。一旦被初始化,它就成为一个常量。2. 声明一个不可继承的类:当使用final关键字声明一个类时,该类不能被继承
2023-09-04

Java中final怎么使用

这篇文章主要介绍“Java中final怎么使用”,在日常操作中,相信很多人在Java中final怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中final怎么使用”的疑惑有所帮助!接下来,请跟
2023-06-21

Java final的用法有哪些

这篇文章主要介绍“Java final的用法有哪些”,在日常操作中,相信很多人在Java final的用法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java final的用法有哪些”的疑惑有所帮助!
2023-06-17

java final的作用有哪些

Java中的final关键字有以下几个作用:1. 声明一个常量:可以用final修饰一个变量,使其变成一个常量,一旦被赋值后就不能再修改。例如:final int MAX_VALUE = 10;2. 防止继承:可以用final修饰一个类,使
2023-09-05

java面向对象之final修饰符

一、final修饰符定义:final关键字可用于修饰类、变量和方法final修饰变量时,表示该变量一旦获得了初始值就不可被改变(严格来说:final修饰得变量不可被改变,一旦获得初始值,该final变量得值就不能被重新赋值)final既可以修饰成员变量(类变量
java面向对象之final修饰符
2018-04-17

Java中final,finally,finalize有哪些区别

本篇内容主要讲解“Java中final,finally,finalize有哪些区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中final,finally,finalize有哪些区别”
2023-06-21

final与static关键字如何在Java中使用

本篇文章给大家分享的是有关final与static关键字如何在Java中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、final 根据程序上下文环境,Ja
2023-05-31

详解Java中的final关键字

子类可以在父类的基础上改写父类内容,为了避免这种随意改写的情况,Java提供了final关键字,用于修饰不可改变内容。本文就来详细说说final关键字的使用,需要的可以参考一下
2022-11-13

Java中的final是什么意思?

java中的final是关键字,可以用来修饰引用、方法和类。(推荐:java视频教程)1、用来修饰一个引用如果引用为基本数据类型,则该引用为常量,该值无法修改;如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不
Java中的final是什么意思?
2014-08-24

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录