final相关内容
似乎几乎没有人意识到这一点,但是Java中的"this reference"是最终的.在正常的编程天中,我认为我可以通过在自己的类中重新定义此引用来重新定义整个实例: public void method(){这=新的MyObject("arg1",arg2,arg3);//它抛出一个编译错误} 为什么这个引用在Java中是最终的? 解决方案 问题不是不是 this 是 final
..
可能重复: 何时应该使用final? 除非必要,我倾向于将所有变量声明为 final .我认为这是一个好习惯,因为它允许编译器检查标识符是否按我的期望使用(例如,它没有突变).另一方面,它会使代码混乱,也许这不是"Java方式". 我想知道是否存在关于非必需使用最终变量的普遍公认的最佳实践,以及在此讨论中是否应该考虑其他折衷或方面. 解决方案 "Java方式"本质上是混乱的.
..
在Java 8中,Java设计人员提出了一个有效的最终变量的概念,即,如果要在变量"final"之后附加变量,则该变量不会产生编译器错误.我的问题是,相对于经典的“决赛",新近提出的“有效决赛"概念是什么?作为Java开发人员,我实际上能获得什么好处? 解决方案 最终的有效变量可以在lambda表达式中使用.这样想吧.这是一种情况-如果您想在内联/anonymous类中使用变量,则必须将其
..
如果我有一个Java中具有不变成员的类,我会这样做: class MyClass {私有的最终字符串名称;私人最终int ID;myClass(字符串名称,整数ID){this.name =名称;this.id = id;}字符串getName(){返回名称;}int getId(){返回ID;}} 在Progress-4GL中,您通常会看到类似以下内容的内容:(请不要讲匈牙利书写法.我也
..
已经讨论了局部变量为 final 或有效为final 的差异此处.但是,我不太了解为什么它是在Java 8中引入的.对我来说,它似乎只给程序员留下了 final 关键字的自由,而是有效地将变量视为final.逻辑上没有任何变化,只是'lazy'程序员的助手,而无需编写 final . 即使是退后一步也不是,因为现在有效地为final的变量会错过关键字,而不是向代码读者表明该关键字.那么Ora
..
我刚刚看到此问题,显然Java应该拒绝对lambda表达式主体内的非最终变量的访问.为什么? 编辑:例如,我不明白为什么以下代码有害: String []数字=新的String [10];//将一些数字字符串放入BigInteger sum = new BigInteger("0");number.forEach(n-> sum = sum.add(new BigInteger(n)))
..
我是Java新手,我试图从Oracle网站上的教程中理解以下内容:
..
考虑代码段: 如果在主线程中,我将其包含在方法- 中 volatile CountDownLatch锁存器= new CountDownLatch(3);new Thread(new ProcessThread("Worker1",latch,20000)).start();//20秒new Thread(new ProcessThread("Worker2",latch,60000)
..
我目前正在尝试了解此JLS关于最终字段的部分. 为了更好地理解JLS中的文本,我还在阅读 Jeremy Manson(JMM的创建者之一)的Java内存模型. 本文包含的示例引起了我的兴趣:如果使具有最终字段的对象 o 对另一个线程 t 两次可见: 首先,“不当"在 o 的构造函数完成之前 接下来,“适当地"使用在 o 的构造函数完成之后 然后 t 可以看到半结构化的 o
..
我的问题与发布的内容不同: 注释属性的值必须为常量表达式 OR 注释属性的值最小值必须为常量表达式 我已经将其设置为 final 和 static ,但仍将鼠标悬停在该错误上. 这是我的代码: Login.java @FindBy(xpath = Constants.user_email)公共静态WebElement user_email; Constants.java
..
我正在尝试修改我在ClassA中创建的公共静态最终String []字段,然后使用反射在ClassB中对其进行修改.但是我得到了NoSuchFieldException. java.lang.NoSuchFieldException:测试在java.lang.Class.getField(未知来源)在packageA.ClassA.(ClassA.java:17) Class
..
关于可能的重复项: 该线程没有要求如何扩展 final 类.在问为什么声明为 final 的类可能会扩展另一个类. 来自此线程: final 类只是无法扩展的类. 但是,我有一个帮助程序类,该类声明为 final ,并 extends 另一个类: 公共最终类PDFGenerator扩展了PdfPageEventHelper {私有静态字体字体;私人PDFGenerator
..
让我们在这里查看我的枚举定义: 公共枚举日{星期一(1),星期二(2),周三(3);整数索引Day(int i){索引= i;}public void setIndex(int index){this.index =索引;}公共静态void main(String [] args){第x天=周一;第y天=星期一;x.setIndex(2);System.out.println(y.index);
..
在此问题中,该问题表示 final transient 字段不能设置为任何非默认值.那么,为什么我对 aVar1 变量有3个,而对 aVar3 变量则有s3? import java.io. *;导入java.util.*;课堂测试{公共静态无效的main(String [] args)引发IOException,ClassNotFoundException{A a1 =新的A();//将a1
..
事实: javac 被编程为检测变量是否为 final 或是否可以有效地视为 final . 证明: 此代码对此进行了说明. public static void finalCheck(){字符串str1 ="hello";可运行r =()->{str1 ="hello";};} 由于编译器能够检测到 String 引用 str1 在函数中被重新分配,因此无法编译.
..
我对“最终"字词的用法有很大的困惑.类和方法之间的关键字.也就是说,为什么final方法仅支持继承,而不支持final类? 最终A类{void print(){System.out.println("Hello,World!");}}最终课程扩展了A {公共静态void main(String [] args){System.out.println("hello world");}} 错
..
在Java中,可以在类中声明一种方法,以防止子类覆盖它. 例如: Foo类{最后的void bar(){//这里有一些代码.}} Dart中有类似的构造吗? 解决方案 package:meta 提供了 @sealed 注释完全禁止派生类. 请注意,这些注释仅向 dartanalyzer 提供提示.它们实际上并不会阻止任何违反注释的操作,而是会在执行分析时导致打印警告.
..
我的问题与此基本相同,但这是否也适用于 static 功能? 我想了解: 编译器是否将 final 类中的所有 static 函数都视为 final ? 将 final 关键字添加到 final 类中的 static 函数是否有效? 解决方案 在final类中,所有方法也都是隐式final的,因为将class设置为final意味着无法继承它,因此不能隐藏或覆盖它在子类中的方法
..
请不要介意,这只是一个关于数组长度属性的简单问题.作为Java的初学者,我遇到了Constants和final关键字,其描述为: 常量是不可修改的变量,用关键字final声明.它们的值在程序执行期间不能更改.另外,必须在声明期间初始化常量.例如: 最终双精度PI = 3.1415926;//需要初始化 我已经阅读了几乎所有相关文章,但是我对其初始化感到困惑.我尝试使用Netbeans
..
是否可以使用AspectJ在最终方法周围添加建议?我完全意识到使用Spring AOP是不可能的.但是我找不到与AspectJ相关的任何东西. 解决方案 个人简介很抱歉,但是我想这样说:您想使用AspectJ.您为什么不尝试?,您得到的结果要比在这里写下问题并等待别人回答的结果要快得多.您的问题格式也不适合SO,因为您不会发布任何遇到问题的代码,而只问一个一般性问题. 是的,使用As
..