我们怎么可能在创建对象时初始化类的最终变量?谁能解释一下这怎么可能?... 最佳答案 您必须一次且仅一次初始化最终变量。对于实例变量,可以通过三种方式执行此操作:在构造函数中在实例初始化block中。当你申报的时候以下是这三者的示例:publicclassX{privatefinalinta;privatefinalintb;privatefinalintc=10;{b=20;}publicX(finalintval){a=val;}}在每种情况下,当您调用newX(...)时,代码将运行一次,并且无法再次调用其中任何一个,这满足了
为什么人们如此强调让类中的每个变量都成为“最终”变量?我不认为将final添加到私有(private)局部变量有任何真正的好处,或者真的将final用于常量以外的任何东西并将变量传递给匿名内部类。我无意挑起任何形式的口水战,我只是真诚地想知道为什么这对某些人来说如此重要。我错过了什么吗? 最佳答案 意图。修改您的代码的其他人不会更改他们不应该更改的值。如果编译器知道某个字段的值永远不会改变,则可以进行编译器优化。此外,如果类中的每个变量都是最终变量(如您在帖子中所指),那么您就有了一个不可变类(只要您不公开对可变属性的引用),这是实
我一般认为资源清理是在finallyblock中完成的,最近我在一个类中发现了这个特定的代码片段,它覆盖了Object类'finalize()方法。protectedvoidfinalize(){try{In.close();Out.close();socket.close();}catch(Exceptione){//loggercodehere}}这是个好主意吗?finalize()相对于finally的优缺点是什么? 最佳答案 finallyblock只是一个始终在tryblock之后执行的代码块,即使出现异常也是如此。即它在
我的应用程序在Windows中运行,但在Linux中失败并出现Givenfinalblocknotproperlypadded异常。配置:JDK版本:1.6Windows:版本7Linux操作系统:CentOS5.864位我的代码如下:importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.security.InvalidKeyException;importjava.security.Key;importjava.security.NoSuchAlgorithmException;
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不允许在供应商内部使用final变量,因为它可能未被初始化,但在“(this)”之前。变量使它编译并运行良好。此外,如果在分配变量之前调用此类供应商,则调用此类供应商会导致NullPointerException而不是编译器错误,如果在之后调用,则会按预期运行。是否在某处描述了这种行为?我正在使用OpenJDK1.8.0_151。例子:importjava.util.function.Supplier;classExample{finalStringstr;Suppliertest1=()->str.length();//DOESNOTCOMPILESuppliertest2=
我知道最终类(不能继承类)和私有(private)构造函数(不能创建类的实例)之间的区别。但是为什么Arrays和Math这两个Java类都有私有(private)构造函数,而Math是最终类而Arrays是不是?有什么区别?不都是实用类吗?谢谢 最佳答案 当类有一个私有(private)构造函数但不是final时,你可以在同一个类文件中定义内部类,这些内部类有公共(public)构造函数并且可以被实例化。但是您不能在该初始类文件之外定义任何子类。例如,这将编译:publicclassAnimal{publicvoidsay(){S
我想在搜索结果中排除页面的很多固定部分,以防止混淆每个页面上的独特内容。我读到class="nocontent"将为Google执行此操作。但是其他主要搜索引擎如雅虎和必应呢?是否有全局接受的解决方案,或者是否有额外的步骤让他们这样做?感谢您的帮助。 最佳答案 Google不为一般搜索提供此类功能。类(class)nocontent仅适用于Google自定义搜索。评论googleon/googleoff仅适用于GoogleSearchAppliance。雅虎!introduced2007年的robots-nocontent类。Goo
我有一个抽象类,它是类层次结构的根。该根类有一个带有一些简单实现的方法,似乎没有必要随时随地更改该实现。使该方法成为非虚方法很好,但是某些子类可能会意外地重新实现它。在这种情况下,虚拟final方法是更好的解决方案吗? 最佳答案 如果您决定将该方法声明为virtual...final,您将使所有用户支付虚拟调度的运行时成本,以保护可能意外隐藏基类的函数。由于C++的指导原则之一是“你don'tpayforyoudon't使用”,我认为最好让函数保持非虚函数,如果他们隐藏了功能。 关于c+
我有一个C++库,它由Java通过基于SWIG的接口(interface)调用。在Java方面,我使用默认结构接口(interface)和carrays.i的%array_class构建了一个包含指向其他结构数组的指针的结构。因为Java的垃圾收集器不知道顶级结构的成员,数组有时被释放,其终结器delete[]是其后备内存。我需要一种解决方法,最好不要在Java中复制结构,因为它相当大。一个最小的例子看起来像这样(尽管它可能不会触发错误,因为它做的不多):C++/痛饮:%moduleexample%include"carrays.i"%array_class(object,object