Final-Metaverse-Fantasy
全部标签 在SpringController中实例化Logger时,是否有任何理由将其声明为staticfinal?Logger不在MyController.class之外使用。我已经看到这两个例子都在使用,但不明白为什么我应该使用其中一个。privateLoggerlogger=LoggerFactory.getLogger(MyController.class);对privatestaticfinalLoggerlogger=LoggerFactory.getLogger(MyController.class); 最佳答案 我个人使用pr
这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Whenshouldoneusefinal?除非必要,我倾向于声明所有变量final。我认为这是一个很好的做法,因为它允许编译器检查标识符是否按我的预期使用(例如,它没有变异)。另一方面,它使代码困惑,也许这不是“Java方式”。我想知道关于非必需使用final变量是否存在普遍接受的最佳实践,以及此讨论是否还有其他权衡或方面需要注意。 最佳答案 “Java方式”本质上是杂乱无章的。我说这是一种很好的做法,但我没有遵循。测试通常可以确保我在做我想做的事情,而
我正在阅读这篇文章WhywouldastaticnestedinterfacebeusedinJava?特别是第一个答案。在那个答案中,在接口(interface)字段上使用“public”或“publicfinal”这些词是多余的。我的问题是:为什么?我为什么要删除它们?如果我有这样的事情:publicinterfaceInt1{publicvoidadd();voidremove();}这是否意味着我希望add方法由任何类实现,而remove方法只能由我的同一个包的类实现? 最佳答案 Are“public”and“publicf
我正在生成一个对象的ArrayList。以下是代码ArrayListsomeArrayList=newArrayList();PublicArrayListgetLotOfData(){ArrayListsomeData=newArrayList();returnsomeData;}someArrayList=eDAO.getLotOfData();一旦我有了这个ArrayList对象“someArrayList”,我想将它声明为public和final并将它存储在一个常量文件中,以便可以全局访问它。有没有办法我可以做到这一点?如果我将Arraylist对象声明为public和fina
好的,假设我有一个看起来像这样的类(class):publicclassSignupServletextendsHttpServlet{privatestaticfinalLoggerSERVLET_LOGGER=COMPANYLog.open(SignupServlet.class);privatestaticfinalExceptionMessageHandlerhandler=newExceptionMessageHandler();privatestaticfinalSignupServletObservableAgentsignupObservableAgent=newSig
如果在一个类中我有一个ConcurrentHashMap实例,该实例将被多个线程修改和读取,我可能会这样定义:publicclassMyClass{privatevolatileConcurrentHashMapmyMap=newConcurrentHashMap();...}将final添加到myMap字段会导致错误提示我只能使用final或volatile。为什么不能两者兼得? 最佳答案 volatile只与变量本身的修改有关,与它所引用的对象无关。有一个finalvolatile字段是没有意义的,因为final字段不能被修改。
我们知道java中“final”关键字的用途。在将变量声明为final时,我们必须初始化变量。比如“finalinta=10;”我们不能改变“a”的值。但是,如果我们选择HashTable,它甚至可以添加一些值,甚至将HashTable声明为final。示例::privatestaticfinalHashtableMYHASH=newHashtable(){{put("foo",1);put("bar",256);put("data",3);put("moredata",27);put("hello",32);put("world",65536);}};现在我将MYHASHHashTa
有人可以解释为什么以下编译:finalshorts1=1;finalcharc1=1;byteb1=s1;byteb2=c1;但以下没有(编译器错误信息是Typemismatch:cannotconvertfromshorttobyte):shorts1=1;charc1=1;byteb1=s1;byteb2=c1; 最佳答案 答案在JLS-5.2.AssignmentConversion:..iftheexpressionisaconstantexpression(§15.28)oftypebyte,short,char,orin
这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:DoesuseoffinalkeywordinJavaimprovetheperformance?final修饰符有differentconsequences在java中取决于你应用它。我想知道的是,如果另外它可能会帮助编译器创建更高效的字节码。我想这个问题深入到JVM是如何工作的,并且可能是JVM特定的。那么,根据您的专业知识,以下任何一项对编译器有帮助吗,还是仅出于正常的java原因使用它们?期末课final方法最终字段final方法参数谢谢!编辑:感谢您的所有回答!请注意,正如@Zohaib建议的那
我见过很多人写的代码publicstaticfinalStringmystring=...然后只使用一个值。为什么他们必须这样做?为什么他们必须在使用之前将值初始化为final?更新好的,谢谢大家的回答,我理解这些键的含义(publicstaticfinal)。我不明白的是为什么人们会使用它,即使常量只会在一个地方并且只在同一个类中使用。为什么要宣布它?为什么我们不只使用变量? 最佳答案 final表示变量的值不会改变——也就是说,一个constant,它的值在声明之后就不能被修改。当你想创建一个String时使用publicfin