草庐IT

finalizers

全部标签

java - "Syntax error, insert "Finally"to complete TryStatement"是什么原因

我正在使用eclipse创建一个android应用程序,该应用程序获取手机上所有当前显示的应用程序的列表,但我收到一个我以前从未见过的错误。我的代码看起来是正确的,但在其中一个“}”括号中出现错误“语法错误,插入“最后”以完成TryStatement”,有人知道如何解决此错误吗?谢谢。 最佳答案 您需要有一个“catch”子句或一个“finally”来伴随您的尝试:try{//...somethingdangerous...}catch(IOExceptione){//...handleerrors...}finally{//...

Java `final` 类和模拟

这个问题在这里已经有了答案:Howtomockafinalclasswithmockito(28个答案)关闭12个月前。我正在开发一款编程游戏,玩家可以访问抽象类并扩展它来控制机器人的行为。因为它是一个编程游戏,所以我正在努力保护我的游戏基础设施,这样玩家就不会弄乱游戏,而不仅仅是我给他们的类(class);为此,我将大部分类(class)设为final,但现在我无法在单元测试中模拟它们(mockito+testNG)。所以我想知道,我该如何解决这个问题?有没有办法让类非最终测试,然后以某种方式在构建周期的后期自动“final-ize”它们(我使用maven以防它与答案)。我不想添加另

java - 为什么我们允许在 java 中有一个 final main 方法?

谁能告诉我在java中将main方法设置为final的用法。虽然这在java中是允许的publicstaticfinalvoidmain(String[]args){}我看不出将其设为最终版本有任何用处。反正它是静态的,所以我们不能覆盖它。 最佳答案 将final添加到静态方法中实际上可以有所作为。考虑以下代码:classA{publicstaticvoidmain(String[]args){System.out.println("A");}}classBextendsA{publicstaticvoidmain(String[]

java - GSON 是否应该被声明为 static final?

我在代码中使用JavaCallableFuture。下面是我的主要代码,它使用了future和callables-下面是我的主要代码,它使用了future和callables-publicclassTimeoutThread{publicstaticvoidmain(String[]args)throwsException{ExecutorServiceexecutor=Executors.newFixedThreadPool(5);Futurefuture=executor.submit(newTask());try{System.out.println(future.get(3,T

java - 错误 : cannot assign a value to final variable

我正在做一个赋值,但我遇到了这个错误:无法为最终变量计数赋值到目前为止,这是我的代码...publicclassList{privatefinalintMax=25;privatefinalintcount;privatePersonlist[];publicList(){count=0;list=newPerson[Max];}publicvoidaddSomeone(Personp){if(count我是java的新手,显然不是计算机高手,所以请尽可能用最简单的术语解释问题/解决方案。非常感谢。 最佳答案 count++;会抛出

java - 为什么 Java 中的局部变量不被视为 "effectively final",即使之后没有任何修改?

在一个方法中我有这个:intx=0if(isA()){x=1;}elseif(isB()){x=2;}if(x!=0){doLater(()->showErrorMessage(x));//compileerrorhere}//nomorereferenceto'x'here我不明白为什么它会产生编译错误。该错误表明x不是最终的或有效的最终的,因此无法从lambda主体访问它。doLater调用后没有修改x,所以x的值实际上在doLater时就已经确定了被称为。我猜这个问题的答案是因为x没有资格被称为effectively-final变量。但是,我想知道是什么原因。编译器不能只创建一个

java - finally子句java中的break语句

publicclassFinallyTest{staticinti=0;publicstaticvoidmain(Stringa[]){while(true){try{i=i+1;return;}finally{i=i+1;break;}}System.out.println(i);}}在上面的代码中输出是'2'。我所期待的是什么都不应该被打印出来。“break”在这里到底做了什么?请解释。谢谢 最佳答案 finally子句更改了try子句的“完成原因”。详细解释参见JLS14.20.2-Executionoftry-catch-f

java - final 变量在匿名类中使用时的垃圾收集

如果我有类似下面的代码:publicConstructor(finalObjecto){taskSystem.add(newCycleTask(15,15,-1){@Overridepublicvoidexecute()throwsThrowable{//accessohereevery15cyclesforever}});}o什么时候被垃圾收集,如果有的话?只有当任务被收集时,它才会永远保留在内存中,因为它是最终的? 最佳答案 o可能一旦不再可达,无论它是否是最终的,都会被垃圾收集。显然,只要execute在运行,如果需要访问o,

java - 理解 try catch finally 及其返回值

我有以下一段代码。publicstaticvoidmain(String[]args){System.out.println(returnString());}privatestaticStringreturnString(){try{System.out.println("Executingtry");return"Returntryvalue";}catch(Exceptione){System.out.println("ExecutingCatch");return"Returncatchvalue";}finally{System.out.println("Executingf

java - Hibernate 4.3.0.Final 和 Spring Data JPA 1.4.3.RELEASE

我是第一次尝试设置和使用SpringData。当然,您会希望使用最新版本(SpringDataJPA1.4.3.RELEASE和Hibernate4.3.0.Final)。按照在线示例配置后,应用程序抛出异常。org.springframework.dataspring-data-jpa1.4.3.RELEASEorg.hibernatehibernate-coreHibernate4.3.0.Finalcommons-collectionscommons-collectionsorg.hibernatehibernate-search4.4.2.Finalorg.hibernateh