草庐IT

finalize

全部标签

java - 过度使用 final 会弊大于利吗?

为什么人们如此强调让类中的每个变量都成为“最终”变量?我不认为将final添加到私有(private)局部变量有任何真正的好处,或者真的将final用于常量以外的任何东西并将变量传递给匿名内部类。我无意挑起任何形式的口水战,我只是真诚地想知道为什么这对某些人来说如此重要。我错过了什么吗? 最佳答案 意图。修改您的代码的其他人不会更改他们不应该更改的值。如果编译器知道某个字段的值永远不会改变,则可以进行编译器优化。此外,如果类中的每个变量都是最终变量(如您在帖子中所指),那么您就有了一个不可变类(只要您不公开对可变属性的引用),这是实

java - 清理 finalize() 或 finally() 中的代码?

我一般认为资源清理是在finallyblock中完成的,最近我在一个类中发现了这个特定的代码片段,它覆盖了Object类'finalize()方法。protectedvoidfinalize(){try{In.close();Out.close();socket.close();}catch(Exceptione){//loggercodehere}}这是个好主意吗?finalize()相对于finally的优缺点是什么? 最佳答案 finallyblock只是一个始终在tryblock之后执行的代码块,即使出现异常也是如此。即它在

java - 异常 : "Given final block not properly padded" in Linux, 但它适用于 Windows

我的应用程序在Windows中运行,但在Linux中失败并出现Givenfinalblocknotproperlypadded异常。配置:JDK版本:1.6Windows:版本7Linux操作系统:CentOS5.864位我的代码如下:importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.security.InvalidKeyException;importjava.security.Key;importjava.security.NoSuchAlgorithmException;

java - catch 和 finally 中 return 语句的行为

publicclassJ{publicIntegermethod(Integerx){Integerval=x;try{returnval;}finally{val=x+x;}}publicstaticvoidmain(String[]args){JlittleFuzzy=newJ();System.out.println(littleFuzzy.method(newInteger(10)));}}它将返回“10”。现在我只是将ReturntypeInteger替换为StringBuilder并且Output已更改。publicclassI{publicStringBuildermet

Java 8 供应商行为 : final variable might not be initialized

Java不允许在供应商内部使用final变量,因为它可能未被初始化,但在“(this)”之前。变量使它编译并运行良好。此外,如果在分配变量之前调用此类供应商,则调用此类供应商会导致NullPointerException而不是编译器错误,如果在之后调用,则会按预期运行。是否在某处描述了这种行为?我正在使用OpenJDK1.8.0_151。例子:importjava.util.function.Supplier;classExample{finalStringstr;Suppliertest1=()->str.length();//DOESNOTCOMPILESuppliertest2=

Java-Final 类与私有(private)构造函数 : Difference between java. util.Arrays 和 java.lang.Math

我知道最终类(不能继承类)和私有(private)构造函数(不能创建类的实例)之间的区别。但是为什么Arrays和Math这两个Java类都有私有(private)构造函数,而Math是最终类而Arrays是不是?有什么区别?不都是实用类吗?谢谢 最佳答案 当类有一个私有(private)构造函数但不是final时,你可以在同一个类文件中定义内部类,这些内部类有公共(public)构造函数并且可以被实例化。但是您不能在该初始类文件之外定义任何子类。例如,这将编译:publicclassAnimal{publicvoidsay(){S

java - 在 Java9 中,终结器已被弃用,取而代之的是引入了清理器。两者有什么区别?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭4年前。Improvethisquestion在Java9中,终结器已被弃用,并引入了清洁器的新概念。具体原因是什么?是否有任何特定的场景或原因应该优先使用清洁器而不是终结器(假设不推荐使用它们)。?

search - 从主要搜索引擎中排除页面部分的 final方法

我想在搜索结果中排除页面的很多固定部分,以防止混淆每个页面上的独特内容。我读到class="nocontent"将为Google执行此操作。但是其他主要搜索引擎如雅虎和必应呢?是否有全局接受的解决方案,或者是否有额外的步骤让他们这样做?感谢您的帮助。 最佳答案 Google不为一般搜索提供此类功能。类(class)nocontent仅适用于Google自定义搜索。评论googleon/googleoff仅适用于GoogleSearchAppliance。雅虎!introduced2007年的robots-nocontent类。Goo

c++ - 虚拟 final方法是否比根类中的非虚拟方法更好?

我有一个抽象类,它是类层次结构的根。该根类有一个带有一些简单实现的方法,似乎没有必要随时随地更改该实现。使该方法成为非虚方法很好,但是某些子类可能会意外地重新实现它。在这种情况下,虚拟final方法是更好的解决方案吗? 最佳答案 如果您决定将该方法声明为virtual...final,您将使所有用户支付虚拟调度的运行时成本,以保护可能意外隐藏基类的函数。由于C++的指导原则之一是“你don'tpayforyoudon't使用”,我认为最好让函数保持非虚函数,如果他们隐藏了功能。 关于c+

c++ - 带有尾随返回类型的 final、override、const 的语法

我正在尝试覆盖虚拟,但也使用关键字override、final和const,以及尾随返回类型。问题似乎出在派生类中,编译器错误(说我没有指定尾随返回类型)并没有太大帮助。代码在这里:https://wandbox.org/permlink/zh3hD4Ukgrg6txyE也贴在下面。我玩过不同的顺序,但似乎仍然无法正确处理。任何帮助将不胜感激,谢谢。#includeusingstd::cout;usingstd::endl;usingstd::ostream;////////////////////////////////////////////////BasestuffclassBa