草庐IT

non-final

全部标签

java - "final"是如何起到安全作用的呢?

这个问题在这里已经有了答案:DoestheJava'final'keywordactuallyimprovesecurity?(12个答案)关闭9年前。我已阅读Wikipediahere那:Afinalclasscannotbesubclassed.Thisisdoneforreasonsofsecurityandefficiency.我想知道Java中的final可以实现什么样的安全性?

java - 在 finally block 中关闭文件不起作用

try{FileReaderfr=newFileReader(file);BufferedReaderbr=newBufferedReader(fr);Stringline=null;}catch(FileNotFoundExceptionfnf){fnf.printStackTrace();}finally{fr.close();}fr.close()显示错误:frcannotberesolved我读到在finallyblock中关闭文件是一个很好的做法。那我做错了什么? 最佳答案 变量fr只在tryblock中有效。它超出了fi

java - 关键字final有什么用?

在下面的代码中,如果我从EditText中删除关键字final,我将在第(6)行中出现错误,我将EditText对象(et)传递给Intent...我必须在这里知道final关键字的重要性...finalEditTextet=(EditText)findViewById(R.id.t);Buttonb=(Button)findViewById(R.id.b1);b.setOnClickListener(newButton.OnClickListener(){publicvoidonClick(Viewv){Intenton=newIntent(Intent.ACTION_CALL,Ur

java - 为什么要避免使用 final 关键字?

在java中,是否存在允许扩展非抽象类的情况?当存在类层次结构时,它似乎总是指示错误代码。你同意吗,为什么/为什么不同意? 最佳答案 当然,有些时候使用非最终具体类是有意义的。但是,我同意Kent的观点-我认为类默认情况下应该是最终的(在C#中密封),而Java方法默认情况下应该是最终的(就像在C#中一样)。正如Kent所说,继承需要仔细的设计和文档——很容易认为您可以只覆盖一个方法,但不知道在什么情况下可以从基类调用该方法作为其余部分的一部分实现。参见"Howdoyoudesignaclassforinheritance"对此进行

java - 为什么我们不能覆盖 static 和 final 方法?

这个问题在这里已经有了答案:Whydoesn'tJavaallowoverridingofstaticmethods?(22个答案)关闭9年前。我试图理解为什么我们不能覆盖静态和final方法。我不明白它背后的目的。

java - Java单例类中final关键字是必须的吗?

publicclassMySingleton{privatestaticfinalMySingletonINSTANCE=newMySingleton();privateMySingleton(){}publicstaticgetInstance(){returnINSTANCE;}}这是实现单例的正确方法吗?如果是,那么final关键字的必要性是什么? 最佳答案 Final将确保实例在创建后不可更改。如果你只包含一个构造函数,而不包含setter,那没什么大不了的。没有人可以更改您的INSTANCE,而您也没有更改它。将它留在那里

java - 一个 `finalize` 调用如何破坏 GC/JVM?

调查时WhyThreadPoolExecutorbehavesdifferentlywhenrunningJavaprograminEclipseandfromcommandline?我写了一个测试,抛出了一个非常奇怪的OutOfMemoryError(maxmem=256Mb)classA{byte[]buf=newbyte[150_000_000];protectedvoidfinalize(){inti=1;}}Aa1=newA();a1=null;Aa2=newA();注释掉inti=1并且测试有效。据我了解,当finalize为空时,HotSpot会忽略它。但是一个几乎空的f

java - 在 finally block 中将对象引用设置为 null

publicvoidtestFinally(){System.out.println(setOne().toString());}protectedStringBuildersetOne(){StringBuilderbuilder=newStringBuilder();try{builder.append("Cool");returnbuilder.append("Return");}finally{builder=null;/*;)*/}}为什么输出是CoolReturn,而不是null?问候,马亨德拉Athneria 最佳答案

java - 在System.java源码中,标准输入、输出和错误流都被声明为final并初始化为null?

publicfinalstaticInputStreamin=null;publicfinalstaticPrintStreamout=null;publicfinalstaticPrintStreamerr=null;但众所周知,这些流默认连接到控制台并且已经打开。System类中还有setIn()、setOut和setErr()方法来重定向流。当它们被声明为final并设置为初始化值null时,这怎么可能呢?我编译了以下代码,在调用println()时设置断点并使用netbeans进行调试。我的目标是通过进入源代码来准确确定变量System.in何时被初始化为标准输出。但是似乎在调

java - Java 内存泄漏 : finalization? 故障排除

我有一个行为不端的应用程序,似乎在泄漏。经过简短的探查器调查后,大部分内存(80%)由java.lang.ref.Finalizer实例占用。我怀疑终结器无法运行。一个常见的原因似乎是终结器抛出的异常。然而,Object类的finalize方法的javadoc(例如参见here)似乎自相矛盾:它指出Ifanuncaughtexceptionisthrownbythefinalizemethod,theexceptionisignoredandfinalizationofthatobjectterminates.但后来,它还指出Anyexceptionthrownbythefinaliz