草庐IT

Try-finally

全部标签

java - 为什么 Java 8 接口(interface)方法中不允许出现 "final"?

Java8最有用的特性之一是接口(interface)上的新default方法。引入它们的原因主要有两个(可能还有其他原因):提供实际的默认实现。示例:Iterator.remove()允许JDKAPI演进。示例:Iterable.forEach()从API设计者的角度来看,我希望能够在接口(interface)方法上使用其他修饰符,例如最终。这在添加便捷方法时很有用,可以防止在实现类中“意外”覆盖:interfaceSender{//Conveniencemethodtosendanemptymessagedefaultfinalvoidsend(){send(null);}//Im

java - 在 Java 中使用 final 关键字会提高性能吗?

在Java中,我们看到很多地方可以使用final关键字,但它的使用并不常见。例如:Stringstr="abc";System.out.println(str);在上述情况下,str可以是final,但这通常被忽略。当一个方法永远不会被覆盖时,我们可以使用final关键字。类似地,对于不会被继承的类。在任何或所有这些情况下使用final关键字真的可以提高性能吗?如果是这样,那怎么办?请解释。如果正确使用final确实对性能很重要,那么Java程序员应该养成哪些习惯来充分利用关键字? 最佳答案 通常不会。对于虚拟方法,HotSpot会

java - 你为什么要实现 finalize()?

我已经阅读了很多关于finalize()的菜鸟Java问题,发现没有人真正明确说明finalize()是一种不可靠的清理资源。我看到有人评论说他们用它来清理连接,这真的很可怕,因为接近保证连接已关闭的唯一方法是最终实现try(catch)。我没有受过CS教育,但我从事Java专业编程已有近十年了,而且我从未见过有人在生产系统中实现finalize()。这仍然不意味着它没有它的用​​途,或者我合作过的人一直在做正确的事情。所以我的问题是,在实现finalize()时有哪些用例无法通过语言中的另一个进程或语法更可靠地处理?请提供具体的场景或者你的经验,只是重复Java教科书,或者final

java - 为什么要在 Java 中的方法参数上使用关键字 "final"?

我不明白final关键字在用于方法参数时真正在哪里很方便。如果我们排除匿名类的使用、可读性和意图声明,那么对我来说几乎毫无值(value)。强制某些数据保持不变并不像看起来那么强大。如果参数是一个原始参数,那么它将不起作用,因为参数作为值传递给方法,并且更改它不会在范围之外产生任何影响。如果我们通过引用传递参数,那么引用本身就是一个局部变量,如果在方法内部更改了引用,则不会在方法范围之外产生任何影响。考虑下面的简单测试示例。尽管该方法更改了给它的引用的值,但该测试通过了,但没有任何效果。publicvoidtestNullify(){Collectionc=newArrayList()

java - Java 中的 "final"关键字是如何工作的? (我仍然可以修改对象。)

在Java中,我们使用final关键字和变量来指定其值不会被更改。但是我看到您可以更改类的构造函数/方法中的值。同样,如果变量是static那么它就是一个编译错误。代码如下:importjava.util.ArrayList;importjava.util.List;classTest{privatefinalListfoo;publicTest(){foo=newArrayList();foo.add("foo");//Modification-1}publicstaticvoidmain(String[]args){Testt=newTest();t.foo.add("bar");

带有 try 的 Ruby 字符串日期 to_date 产生无效日期

我想尝试将参数中的日期转换为日期格式,如果不能,那么我想将其分配给今天一年中的日期。这是我试过的。valid_until=params[:valid_until].try(:to_date)||Date.today.next_yeartry方法很酷,因为如果:valid_until日期为nil,它只会返回nil。不过我发现,如果某人有一个无效日期,如“4790224374”,那么它将返回一个ArgumentError作为无效日期。:valid_until日期仍将针对to_date运行。我想通过救援解决这个问题似乎是唯一的答案,只是想知道在明年将其设置为默认值之前是否有更聪明的方法来尝试

ruby - try_convert ruby​​ 方法的用途是什么?

我理解try_convert将尝试对对象使用隐式转换并返回nil如果隐式转换结果为nil,如果对象为nil或者如果不存在隐式转换方法。try_convert的用例是什么?它是否意味着测试输入并在它是预期类型时返回它,否则返回nil,同时避免出现TypeError?为什么不在这种情况下使用is_a? 最佳答案 try_convert根据我的经验,很少使用。但用例是严格转换对象,而不是更宽松地使用它们的表示。例如,考虑:/foo/.to_s#=>"(?-mix:foo)"/foo/.to_str#=>NoMethodError:unde

ruby-on-rails - Rails 3 - NilClass :Class when i try to render `model_name' method 的未定义方法 'new'

我想在用户创建订单时将值保留在表单中(因此,如果用户在字段中有错误,那么用户将获得包含他/她已经打印的参数的页面)。所以我接下来做ControllerclassOrdersController",",:two_words_connector=>","endendend查看新订单:Order'screating{:class=>"form-horizontal"}do|f|%>"control-label"%>"span2",:placeholder=>@everpresent_field_placeholder%>"btnbtn-largebtn-success"%>但是当我输入错误的

ruby-on-rails - Ruby:在 Hash 中使用 try 的两种方法

我想在Ruby中使用try提取一个值。我发现有两种方法可以做到这一点,并在irb中试用了它。>>hash={a:1,b:2}=>{:a=>1,:b=>2}>>hash.try(:a)=>nil>>hash.try(:[],:a)=>1我有两个问题,hash.try(:[],:a)和hash.try(:a)有什么区别?我四处搜索,发现人们同时使用这两种方式。我看到很多地方使用hash.try(:a)来检索值,但为什么我的试验返回nil? 最佳答案 hash.try(:[],:a)#1尝试在hash上调用公共(public)方法[]作为

c++ - ANSI C 等效于 try/catch?

我正在使用一些C代码,并且在代码运行时发现了错误,但对如何进行正确的try/catch(如在C#或C++中)知之甚少。例如在C++中我会这样做:try{//somestuff}catch(...){//handleerror}但在ANSIC中我有点迷茫。我尝试了一些在线搜索,但我没有看到有关如何实现它的足够信息/我想我会在这里问,以防有人能指出我正确的方向。这是我正在使用的代码(相当简单的递归方法),并希望使用try/catch(或等效的错误处理结构)进行包装。但是我的主要问题只是如何在ANSIC中进行try/catch...实现/示例不必是递归的。voidgetInfo(intoff