Final-Metaverse-Fantasy
全部标签 为什么人们如此强调让类中的每个变量都成为“最终”变量?我不认为将final添加到私有(private)局部变量有任何真正的好处,或者真的将final用于常量以外的任何东西并将变量传递给匿名内部类。我无意挑起任何形式的口水战,我只是真诚地想知道为什么这对某些人来说如此重要。我错过了什么吗? 最佳答案 意图。修改您的代码的其他人不会更改他们不应该更改的值。如果编译器知道某个字段的值永远不会改变,则可以进行编译器优化。此外,如果类中的每个变量都是最终变量(如您在帖子中所指),那么您就有了一个不可变类(只要您不公开对可变属性的引用),这是实
我的应用程序在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不允许在供应商内部使用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+
我正在尝试覆盖虚拟,但也使用关键字override、final和const,以及尾随返回类型。问题似乎出在派生类中,编译器错误(说我没有指定尾随返回类型)并没有太大帮助。代码在这里:https://wandbox.org/permlink/zh3hD4Ukgrg6txyE也贴在下面。我玩过不同的顺序,但似乎仍然无法正确处理。任何帮助将不胜感激,谢谢。#includeusingstd::cout;usingstd::endl;usingstd::ostream;////////////////////////////////////////////////BasestuffclassBa
在下面的代码中,我收到以下警告和错误:test.cpp:15:warning:directbase'B'inaccessiblein'D'duetoambiguitytest.cpp:15:error:nouniquefinaloverriderfor'virtualvoidA::f()'in'D'但是如果我从A中移除B的虚拟继承(即structB:publicA),我只会得到警告,没有错误。structA{virtualvoidf()=0;};structB:publicvirtualA{voidf(){}};classC:publicB{};structD:publicC,virt
抱歉,我只是想确定一下,因为我正在考虑在某个时候购买它。是这个吗?C++11是否会有任何后续更改,或者该标准现在正式成为C++语言?(当然不包括最终的C++18、C++2x等。)维基百科说C++11waspublishedas"ISO/IEC14882:2011"[4]inSeptember2011但我对这个过程还不够熟悉,无法真正确定我的问题的答案。 最佳答案 是的,ISO/IEC14882:2011是最终标准(不再是草案)。 关于c++-是ISO/IEC14882:2011thefi
如果我有代码:structParent{virtualvoidfn();};structChild:publicParent{virtualvoidfn()overridefinal{Parent::fn();}};有没有办法让Parent::fn只有在通过Child访问时才成为final而无需重新实现fn,以便其他一些class在从Parent派生时可以覆盖fn,但在从Child派生时不能?喜欢:structChild:publicParent{virtualvoidfn()overridefinal=Parent::fn;};还是其他一些语法? 最佳答案