草庐IT

finalizer

全部标签

java - Java 中 "public static final"常量的 Clojure 等价物是什么

我正在编写一些依赖于许多常量的Clojure代码。它们将在紧密的内部循环中使用,因此通过Clojure编译器+JVM组合尽可能高效地使用和优化它们非常重要。出于同样的目的,我通常会在Java中使用“publicstaticfinal”常量。声明这些的最佳方式是什么? 最佳答案 我认为def-ing全局命名空间中的东西已经很接近了。 关于java-Java中"publicstaticfinal"常量的Clojure等价物是什么,我们在StackOverflow上找到一个类似的问题:

java - 通过反射或其他方式覆盖 java final 方法?

这个问题是在尝试编写测试用例时出现的。Foo是框架库中的一个类,我没有源代码访问权限。publicclassFoo{publicfinalObjectgetX(){...}}我的应用程序将publicclassBarextendsFoo{publicintprocess(){Objectvalue=getX();...}}单元测试用例无法初始化,因为由于其他依赖项我无法创建Foo对象。BarTest抛出一个空指针,因为值为空。publicclassBarTestextendsTestCase{publictestProcess(){Barbar=newBar();intresult=b

java - Hibernate 4.0.0Final SessionFactory.openSession(拦截器拦截器)在哪里

我尝试了来自hibernate4.0interceptors的一些代码,它给出了使用session级拦截器的代码:Sessionsession=sf.openSession(newAuditInterceptor());但是,我同时检查了hibernate-core4.0源代码和onliehibernate4.0java-doc,类SessionFactory没有方法openSession(Interceptorinterceptor),但是hibernate3.6java-doc确实有这个方法。有人知道方法移动到哪里了吗?如果弃用,为什么文档仍将其保留在教程文档中?以及我应该如何在4

c# - 在 catch/finally block 中抛出吞咽异常

通常我会遇到这样的情况,我必须吞下catch/finallyblock中清理代码抛出的异常,以防止原始异常被吞下。例如://ClosingafileinJavapublicvoidexample1()throwsIOException{booleanexceptionThrown=false;FileWriterout=newFileWriter(“test.txt”);try{out.write(“example”);}catch(IOExceptionex){exceptionThrown=true;throwex;}finally{try{out.close();}catch(I

java - 如何在Java中实现对象计数器

一位面试官问我HowcanyouimplementaclassFoo,whereyouwillbeabletocountinstancesofthatclass.TherearemorethreadswhicharecreatinginstanceofthatclassFoo.我用下面的代码回复了publicclassFoo{privatestaticintcount=0;publicFoo(){incrementCount();}publicvoidincrementCount(){synchronize(Foo.class){count++;}}}她再次问我Ifathreadend

java - JVM/GC 是否在程序/线程退出时调用 `finalize()`?

PS:我确实知道如何正确清理,而不依赖于finalize()。Java是否不保证在程序退出时会进行适当的垃圾回收?例如可以说我在缓存中保留了一些数据而不是经常序列化它,我还实现了finalize()希望如果由于任何原因(崩溃除外)我的程序正常退出,然后缓存将由我在finalize()方法中的代码写入DB/file/some-storage。但是根据下面的小实验,JVM似乎并没有“优雅地”清理内存,它只是退出了。Javaspec(参见程序退出)没有说明退出时如何处理内存/gc。还是我应该查看规范的不同部分?以Windows7上使用1.6.0.2764位的以下示例(末尾的输出)为例publ

java - 未捕获的 RuntimeException 和 finally 子句 : which comes first?

在tryblock中抛出一个RuntimeException而未被捕获,而finally子句调用System.exit().publicstaticvoidmain(String[]args){try{Integer.valueOf("NotANumber");}finally{System.out.println("finally");System.exit(0);}}输出是finally如果System.exit(0)从finally中移除,则输出为finallyExceptioninthread"main"java.lang.NumberFormatException:Forin

java - 关闭 Hook 与终结器方法

我只是不明白为什么必须使用Runtime.addShutdownHook。如果你想在jvm退出时做一些清理,为什么不直接重载守护进程类的finalize方法。使用shutdownhook相对于finalize方法有什么优势。还有一个已弃用的函数runFinalizersOnExit。如果我将它设置为false,我相信终结器将不会运行。这与java保证终结器总是在垃圾回收之前运行相矛盾。 最佳答案 不能保证终结器永远运行。finalize()在对象被垃圾回收时调用。但是当程序运行时,垃圾收集器可能不会收集任何东西。相比之下,关闭Hoo

Java 8 catch 22 与 lambda 表达式和有效的 final

我正在玩Java8并遇到了一个基本场景,该场景说明了陷阱22,其中修复一个编译错误会导致另一个编译错误。场景(这只是一个从更复杂的东西简化而来的例子):publicstaticListcatch22(Listinput){Listresult=null;if(input!=null){result=newArrayList(input.size());input.forEach(e->result.add(e));//compileerrorhere}returnresult;}编译错误:Localvariableresultdefinedinanenclosingscopemustb

Java - 如果我在 catch block 中返回,finally block 会被执行吗?

这个问题在这里已经有了答案:DoesafinallyblockalwaysgetexecutedinJava?(51个答案)关闭9年前。这就是我想要做的:try{//code}catch(Exceptione){returnfalse;}finally{//closeresources}这行得通吗?这是不好的做法吗?这样做会更好吗:booleaninserted=true;try{//code}catch(Exceptione){inserted=false;}finally{//closeresources}returninserted;