草庐IT

finalization

全部标签

java - Intellij Idea - 自动将 final 关键字添加到生成的变量中

新引入的代码约定要求尽可能使用“final”关键字。问题是-是否有可能使用这个关键字自动生成变量?例如——我选择一个代码片段:"bla"+"bla"+"bla"然后按ctrl+alt+v-IDE会生成如下变量:StringblaString="bla"+"bla"+"bla";但我需要它是finalStringblaString="bla"+"bla"+"bla";附:我知道检查和“全部修复”的可能性,但它不能随处使用,因为有很多旧代码不应无故重构。 最佳答案 转到首选项->代码样式->代码生成并在“最终修饰符”部分启用“使生成的局

java - Intellij Idea - 自动将 final 关键字添加到生成的变量中

新引入的代码约定要求尽可能使用“final”关键字。问题是-是否有可能使用这个关键字自动生成变量?例如——我选择一个代码片段:"bla"+"bla"+"bla"然后按ctrl+alt+v-IDE会生成如下变量:StringblaString="bla"+"bla"+"bla";但我需要它是finalStringblaString="bla"+"bla"+"bla";附:我知道检查和“全部修复”的可能性,但它不能随处使用,因为有很多旧代码不应无故重构。 最佳答案 转到首选项->代码样式->代码生成并在“最终修饰符”部分启用“使生成的局

c# - 为什么这个 "finally"会执行呢?

如果您运行下面的代码,它实际上会在每次调用goto之后执行finally:inti=0;Found:i++;try{thrownewException();}catch(Exception){gotoFound;}finally{Console.Write("{0}\t",i);}为什么? 最佳答案 以下文字来自C#语言规范(8.9.3Thegotostatement)goto语句执行如下:如果goto语句退出一个或多个带有关联finallyblock的tryblock,则控制最初转移到最里面的try语句的finallyblock。

c# - 判断是否因为抛出异常而执行到 finally block 中

是否有可能确定代码当前是否由于抛出异常而在finally处理程序的上下文中执行?我更喜欢使用IDisposable模式来实现进入/退出范围功能,但对这种模式的一个担忧是,如果出现异常,您可能不一定希望发生范围结束行为出现在using的正文中。我会寻找这样的东西:publicstaticclassMyClass{publicstaticvoidMyMethod(){using(varscope=MyScopedBehavior.Begin()){//Dostuffwithscopehere}}}publicsealedclassMyScopedBehavior:IDisposable{p

c# - try catch finally block 是如何工作的?

在C#中,trycatchfinallyblock是如何工作的?所以如果有异常,我知道会跳转到catchblock,然后跳转到finallyblock。但是如果没有错误,catchblock不会运行,但是finallyblock会运行吗? 最佳答案 是的,无论是否有异常,finallyblock都会运行。Try[tryStatements][ExitTry][Catch[exception[Astype]][Whenexpression][catchStatements][ExitTry]][Catch...][Finally[fi

ruby - OpenSSL AES-256-CBC 加密错误, "wrong final block length" ruby

使用Ruby1.8.6。我正在编写一个基本服务器,它回显客户端发送的消息的加密版本,以了解Ruby中对称加密的实现。该程序旨在接受套接字连接,共享其key,然后加密接收到的数据,然后再将其发送回客户端程序。然后客户端使用共享key解密消息,显示回显消息。我遇到的问题是返回消息导致“错误的最终block长度(OpenSSL::CipherError)”。进一步检查问题,删除decrypted允许我的客户端程序解密消息,但在末尾添加额外的字符或银行空格。我知道这是因为final关键字删除了额外的填充以允许CBC模式的16位block加密/解密,但我无法弄清楚如何使工作正常。这是简化的服务器

c# - IDisposable:是否有必要在 finally {} 上检查 null?

在您在网络上找到的大多数明确不使用“使用”的示例中,模式类似于:SqlConnectionc=newSqlConnection(@"...");try{c.Open();...}finally{if(c!=null)//如果您使用“using”并查看生成的IL代码,您可以看到它生成了null的检查L_0024:ldloc.1L_0025:ldnullL_0026:ceqL_0028:stloc.sCS$4$0000L_002a:ldloc.sCS$4$0000L_002c:brtrue.sL_0035L_002e:ldloc.1L_002f:callvirtinstancevoid[m

java - JVM 同步 Finally block

查看JavaVirtualMachineSpecification编译后的代码告诉我们如何"synchronized"block是用java实现的。以下代码:publicvoidtestSync(){Objectobj=getSomeObject();synchronized(obj){doSomething();}}...大致相当于这个伪代码:publicvoidtestSync(){Objectobj=getSomeObject();Object__temp=obj;monitorenter__temp;try{doSomething();}finally{monitorexit_

java - 将事物声明为 final 会加速 Eclipse 代码分析和编译吗?

我想知道使代码更明确是否有助于Eclipse更快地分析它。例如,如果我将一个类声明为final,理论上代码分析器在计算类型层次结构时可以跳过搜索其后代。那么,它真的能加快速度吗? 最佳答案 智能分析工具可能会利用final关键字,但我认为分析是在类层次结构中自下而上完成的,因为父类(superclass)无论如何都不需要关心子类。但是,由于利用了某些编译器优化,使用final确实会在一定程度上提高运行时性能。不过这是微观优化;虽然在适当的时候使用final是一个很好的做法,但与优化程序架构相比,性能提升不会很大。

c++ - 干净地抑制 gcc 的 `final` 建议警告 (`-Wsuggest-final-types` 和 `-Wsuggest-final-methods` )

我喜欢使用-Wsuggest-final-types编译我的代码和-Wsuggest-final-methods以便在可能使用final关键字以允许编译器更积极地优化的机会时收到警告。不过,有时这些建议是不正确的-例如,我有一个类Base和一个virtual~Base()析构函数,在另一个项目中以多态方式使用,gcc建议我可以将Base标记为final。有没有办法“干净地”告诉编译器Base是多态使用的,不应该被标记为final?我能想到的唯一方法是使用#pragma指令,但我发现它会使代码困惑且难以阅读。理想情况下,我正在寻找可以添加到类/方法声明前/后的非最终关键字或属性。