这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Cannotrefertoanon-finalvariableinsideaninnerclassdefinedinadifferentmethod为什么在java中不能在内部匿名类中引用非最终变量?简单的回答是“因为它被禁止”,但我想知道,为什么他们禁止这个有用的功能?也许Java缺乏某种能力,或者它以“错误”的方式设计。我想知道。
所以我收到错误消息:“无法引用以不同方法定义的内部类中的非最终变量角色”。我希望能够将字符串角色类型设置为在该下拉列表中选择的任何内容。如果不是我在下面尝试的方式,或者我只是在我正在尝试的代码中犯了一些愚蠢的错误,我该怎么办?谢谢,拉文importjava.awt.*;importjava.awt.event.*;importjava.util.*;importjavax.swing.*;importjavax.swing.*;importjavax.swing.event.*;publicclassFunclassextendsJFrame{FlowLayoutlayout=newF
我有一个类似于下面的Java类:publicfinalclassNode{publicNode(){}}我已经学会了如何通过反射API更改“最终”字段的可访问性,但这是否也适用于类?我可以在运行时将最终类转换为非最终类吗? 最佳答案 您可以使用ASM等库重写类文件。在运行时更改类的final状态可能没有意义,因为它在编译时需要是非最终的才能编译子类。 关于java-通过反射API使Java类成为非最终类,我们在StackOverflow上找到一个类似的问题:
我偶然发现了这个从匿名内部类获取值到外部类中声明的变量的技巧。它有效,但感觉像是一个肮脏的hack:privateintshowDialog(){finalint[]myValue=newint[1];JPanelpanel=newJPanel();finalJDialogdialog=newJDialog(mainWindow,"Hitthebutton",true);dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);JButtonbutton=newJButton("Hitme!");butto
在一些JPA注释中,我想在代码中直接使用字段名称来代替容易出错的字符串:@javax.persistence.OrderBy(value=User_.registrationDate.getName())publicListgetPlugConfigs(){...}但上面的代码不会编译,因为要获取名称,我必须使用不是常量表达式的函数(User_是JPA@StaticMetamodel生成的)。是否可以以任何方式为此使用元模型,或者我是否坚持使用直接字符串常量?有没有办法为元模型自动生成这样的字符串常量?(我正在使用maven-processor-plugin生成)
根据JLS:15.9.5AnonymousClassDeclarationsAnanonymousclassdeclarationisautomaticallyderivedfromaclassinstancecreationexpressionbythecompiler.Ananonymousclassisneverabstract(§8.1.1.1).Ananonymousclassisalwaysaninnerclass(§8.1.3);itisneverstatic(§8.1.1,§8.5.2).Ananonymousclassisalwaysimplicitlyfinal(§
这是来自JLS17.5:Theusagemodelforfinalfieldsisasimpleone.Setthefinalfieldsforanobjectinthatobject'sconstructor.Donotwriteareferencetotheobjectbeingconstructedinaplacewhereanotherthreadcanseeitbeforetheobject'sconstructorisfinished.Ifthisisfollowed,thenwhentheobjectisseenbyanotherthread,thatthreadwill
这个问题在这里已经有了答案:InJava,istherealegitimatereasontocallanon-finalmethodfromaclassconstructor?(4个答案)关闭8年前。我是Java新手,我试图理解Oracle网站教程中的以下行:https://docs.oracle.com/javase/tutorial/java/IandI/final.htmlMethodscalledfromconstructorsshouldgenerallybedeclaredfinal.Ifaconstructorcallsanon-finalmethod,asubclas
我正在使用Lombok来最小化代码。这是我在普通Java中的(人为的)情况:publicclassMyClass{privatefinalintx;privatefinalintsqrt;publicMyClass(intx){this.x=x;sqrt=(int)Math.sqrt(x);}//getters,etc}我想使用lombok生成构造函数和getters:@Getter@RequiredArgsConstructorpublicclassMyClass{privatefinalintx;privateintsqrt;}要在类中进行计算,您可以考虑使用实例block:{sq
这个问题在这里已经有了答案:Whyisn'taqualifiedstaticfinalvariableallowedinastaticinitializationblock?(2个答案)关闭4年前。publicclassTest{privatestaticfinalintA;static{A=5;}}这种初始化静态最终变量A的方法没问题。publicclassTest{privatestaticfinalintA;static{Test.A=5;}}这种方式会产生编译错误“无法为最终变量‘A’赋值。为什么?