我有一个类定义了我现在需要序列化的不可变值类型。不变性来自构造函数中设置的最终字段。我已经尝试过序列化,它可以工作(令人惊讶?)-但我不知道如何。这是一个类的例子publicclassMyValueTypeimplementsSerializable{privatefinalintvalue;privatetransientintderivedValue;publicMyValueType(intvalue){this.value=value;this.derivedValue=derivedValue(value);}//gettersetc...}鉴于该类没有无参数构造函数,如何将
我在Python中找不到与Java的final等效的文档,有这样的东西吗?我正在创建一个对象的快照(用于在任何失败时进行恢复);一旦分配了这个备份变量,就不应对其进行修改——Python中类似final的特性会很好。 最佳答案 Java中的变量是final基本上意味着一旦您分配给一个变量,您就不能重新分配该变量以指向另一个对象。这实际上并不意味着该对象不能被修改。例如,以下Java代码运行良好:publicfinalListmessages=newLinkedList();publicvoidaddMessage(){message
我在Python中找不到与Java的final等效的文档,有这样的东西吗?我正在创建一个对象的快照(用于在任何失败时进行恢复);一旦分配了这个备份变量,就不应对其进行修改——Python中类似final的特性会很好。 最佳答案 Java中的变量是final基本上意味着一旦您分配给一个变量,您就不能重新分配该变量以指向另一个对象。这实际上并不意味着该对象不能被修改。例如,以下Java代码运行良好:publicfinalListmessages=newLinkedList();publicvoidaddMessage(){message
classWithPrivateFinalField{privatefinalStrings="I’mtotallysafe";publicStringtoString(){return"s="+s;}}WithPrivateFinalFieldpf=newWithPrivateFinalField();System.out.println(pf);Fieldf=pf.getClass().getDeclaredField("s");f.setAccessible(true);System.out.println("f.get(pf):"+f.get(pf));f.set(pf,"No
classWithPrivateFinalField{privatefinalStrings="I’mtotallysafe";publicStringtoString(){return"s="+s;}}WithPrivateFinalFieldpf=newWithPrivateFinalField();System.out.println(pf);Fieldf=pf.getClass().getDeclaredField("s");f.setAccessible(true);System.out.println("f.get(pf):"+f.get(pf));f.set(pf,"No
这个问题在这里已经有了答案:Whyareonlyfinalvariablesaccessibleinanonymousclass?(15个回答)Cannotrefertoanon-finalvariableinsideaninnerclassdefinedinadifferentmethod(20个回答)关闭7年前。finalJTextFieldjtfContent=newJTextField();btnOK.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.e
这个问题在这里已经有了答案:Whyareonlyfinalvariablesaccessibleinanonymousclass?(15个回答)Cannotrefertoanon-finalvariableinsideaninnerclassdefinedinadifferentmethod(20个回答)关闭7年前。finalJTextFieldjtfContent=newJTextField();btnOK.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.e
Java中的以下代码使用String的final数组。finalpublicclassMain{publicstaticfinalString[]CONSTANT_ARRAY={"I","can","never","change"};publicstaticvoidmain(String[]args){for(intx=0;x它在控制台上显示以下输出。Icanneverchange如果我们尝试重新分配声明的final类型为String的数组,则会导致错误:finalpublicclassMain{publicstaticfinalString[]CONSTANT_ARRAY={"I",
Java中的以下代码使用String的final数组。finalpublicclassMain{publicstaticfinalString[]CONSTANT_ARRAY={"I","can","never","change"};publicstaticvoidmain(String[]args){for(intx=0;x它在控制台上显示以下输出。Icanneverchange如果我们尝试重新分配声明的final类型为String的数组,则会导致错误:finalpublicclassMain{publicstaticfinalString[]CONSTANT_ARRAY={"I",
有人告诉我,我误解了final的影响.final有什么作用关键词?这是我的想法的简短概述,我知道:Javafinalmodifier(akaaggregationrelation)primitivevariables:canbesetonlyonce.(memoryandperformancegain)objectsvariables:maybemodified,finalappliestoobjectreference.fields:canbesetonlyonce.methods:can'tbeoverridden,hidden.classes:can'tbeextended.ga