草庐IT

java - 如果将 "final"放在变量之前,它会做什么?

非常基本的问题,但是,如果将“final”放在下面的变量之前会做什么......finalEditTextmyTextField=(EditText)findViewById(R.id.myTextField);final是做什么的? 最佳答案 简答停止将“myTextField”变量分配给其他对象。长答案不会阻止“myTextField”变量发生突变,例如将其字段设置为新值。使代码更具可读性(恕我直言),因为读者永远不必怀疑“myTextField”变量是否会在稍后在代码中重新分配。防止意外重新分配变量的错误类别(与使实例不可变的

Java - 可以在静态初始化 block 中初始化最终变量吗?

根据我对Java语言的理解,静态变量可以在静态初始化block中进行初始化。但是,当我尝试在实践中实现这一点时(static变量也是final),我得到了下面屏幕截图中显示的错误: 最佳答案 当然可以:staticfinal变量可以在静态block中初始化但是....在该示例中您有隐式GOTO(try/catch本质上是一个“如果发生不好的事情发生时GOTO捕获”)。如果抛出异常,您的final变量将不会被初始化。请注意,使用静态结构违背了面向对象的教条。它可能会使您的测试复杂化并使调试更加困难。

Java - 可以在静态初始化 block 中初始化最终变量吗?

根据我对Java语言的理解,静态变量可以在静态初始化block中进行初始化。但是,当我尝试在实践中实现这一点时(static变量也是final),我得到了下面屏幕截图中显示的错误: 最佳答案 当然可以:staticfinal变量可以在静态block中初始化但是....在该示例中您有隐式GOTO(try/catch本质上是一个“如果发生不好的事情发生时GOTO捕获”)。如果抛出异常,您的final变量将不会被初始化。请注意,使用静态结构违背了面向对象的教条。它可能会使您的测试复杂化并使调试更加困难。

java - 显示不正确修饰符的匿名内部类

据我了解,以下代码应该将true打印为输出。但是,当我运行此代码时,它正在打印false.来自AnonymousClasses15.9.5.的Java文档:AnanonymousclassisalwaysimplicitlyfinalpublicclassTest{publicstaticvoidmain(Stringargs[]){Objecto=newObject(){};System.out.println("Annonymousclassisfinal:"+Modifier.isFinal(o.getClass().getModifiers()));}}为什么这段代码会这样?

java - 显示不正确修饰符的匿名内部类

据我了解,以下代码应该将true打印为输出。但是,当我运行此代码时,它正在打印false.来自AnonymousClasses15.9.5.的Java文档:AnanonymousclassisalwaysimplicitlyfinalpublicclassTest{publicstaticvoidmain(Stringargs[]){Objecto=newObject(){};System.out.println("Annonymousclassisfinal:"+Modifier.isFinal(o.getClass().getModifiers()));}}为什么这段代码会这样?

java - Java中的最终变量操作

谁能告诉我以下行在Java上下文中的含义是什么:finalvariablecanstillbemanipulatedunlessit'simmutable据我所知,通过将任何变量声明为最终变量,您无法再次更改它,那么上面一行中的immutable一词是什么意思? 最佳答案 这意味着如果您的最终变量是引用类型(即不是像int这样的原始变量),那么它只是不能更改的引用。它不能引用不同的对象,但如果类允许,它所引用的对象的字段仍然可以更改。例如:finalStringBuffers=newStringBuffer();StringBuff

java - Java中的最终变量操作

谁能告诉我以下行在Java上下文中的含义是什么:finalvariablecanstillbemanipulatedunlessit'simmutable据我所知,通过将任何变量声明为最终变量,您无法再次更改它,那么上面一行中的immutable一词是什么意思? 最佳答案 这意味着如果您的最终变量是引用类型(即不是像int这样的原始变量),那么它只是不能更改的引用。它不能引用不同的对象,但如果类允许,它所引用的对象的字段仍然可以更改。例如:finalStringBuffers=newStringBuffer();StringBuff

c# - java中public final static的c#等价物是什么

在Java中我可以写:publicfinalstaticMyClassfoo=newMyClass("foo");在C#中是否有任何等价物? 最佳答案 我能想到的Javafinal字段最接近的东西(不完全相同,finalhasothermeanings也是)是readonly:publicstaticreadonlyMyClassfield=newMyClass("foo");如果您有原始类型(字符串、整数、boolean值),您可能希望使用const代替。publicconststringMAGIC_STRING="Foo";

c# - java中public final static的c#等价物是什么

在Java中我可以写:publicfinalstaticMyClassfoo=newMyClass("foo");在C#中是否有任何等价物? 最佳答案 我能想到的Javafinal字段最接近的东西(不完全相同,finalhasothermeanings也是)是readonly:publicstaticreadonlyMyClassfield=newMyClass("foo");如果您有原始类型(字符串、整数、boolean值),您可能希望使用const代替。publicconststringMAGIC_STRING="Foo";

java - java序列化如何在未指定默认构造函数时反序列化最终字段?

我有一个类定义了我现在需要序列化的不可变值类型。不变性来自构造函数中设置的最终字段。我已经尝试过序列化,它可以工作(令人惊讶?)-但我不知道如何。这是一个类的例子publicclassMyValueTypeimplementsSerializable{privatefinalintvalue;privatetransientintderivedValue;publicMyValueType(intvalue){this.value=value;this.derivedValue=derivedValue(value);}//gettersetc...}鉴于该类没有无参数构造函数,如何将