假设我有A类classA{finalStringfoo(){//..computingresult,contactingdatabase,whatever..return"somecomputedvalue";}//...andabazillionothermethods,someofthemfinal.}现在我有B类classB{StringmethodIWantToTest(Aa){Stringoutput=a.foo();//...whateverthismethoddoes,e.g.:output+="_suffix";returnoutput;}}我将如何对这个方法进行单元测
我正在阅读一些内容,需要对最终类和方法进行一些说明。我的理解是,将一个类声明为final会阻止该类被扩展。因此,是否有必要将最终类中的方法声明为最终的?在我看来,如果类不能扩展,则没有必要将方法声明为final。 最佳答案 如果类被声明为final,则没有必要将方法声明为final,因为类已经不能被扩展。 关于java-如果一个类被声明为final是否有必要将方法声明为final,我们在StackOverflow上找到一个类似的问题: https://stac
简单问题:为什么这是首选:publicclassFoo{finalprivatestaticObjectfoo=newObject();publicstaticvoiddoSomething(){synchronized(Foo.foo){//code}}}关于这个:publicclassFoo{publicstaticvoiddoSomething(){synchronized(Foo.class){//code}}}或者这个:publicclassFoo{publicsynchronizedstaticvoiddoSomething(){//code}}?对我来说,这些看起来基本相
final变量value的这两种初始化有区别吗?classTest{finalintvalue=7;Test(){}}和classTest{finalintvalue;Test(){value=7;}}--编辑:一个更复杂的例子,涉及子类。在这种情况下,“0”会打印到标准输出,但如果我直接分配值,则会打印7。importjavax.swing.*;importjava.beans.PropertyChangeListener;classTestBoxextendsJCheckBox{finalintvalue;publicTestBox(){value=7;}publicvoidadd
你如何初始化它:classA{finalBb;A(Bb){this.b=b;}}classB{finalAa;B(Aa){this.a=a;}}DI框架、反射、更好的设计?动机和用例(已添加):我的特定用例是简化A和B子类中的字段访问。因此,我将它们注入(inject)到派生类中的字段中以快速引用它们,而无需在每个子类中显式声明。还有关于DI的建议,对象最好是不可变的:Guicebestpracticesandanti-patterns. 最佳答案 你可以使用工厂方法classA{finalBb;A(Bb){this.b=b;}}a
这个问题在这里已经有了答案:Finalargumentsininterfacemethods-what'sthepoint?(5个答案)关闭9年前。所以我需要在下面的情况下重复final吗?interfaceFoo{voidmeth(finalBarbar);}publicBazimplementsFoo{@Overridevoidmeth(/*isitfinal?*/Barbar){}}问题不仅是接口(interface)继承,还有类继承——我猜答案是一样的
当我们可以通过实现Runnable并将其传递给Thread构造函数来实现相同的功能时,允许用户通过扩展Thread类来创建线程的本质是什么。 最佳答案 achievethesamefunctionalitybyimplementingRunnableandpassittotheThreadconstructor扩展Thread的使用不限于Runnable。例如你可以changethebehaviorofsomemethods或添加您自己的线程本地信息(始终可以通过Thread.currentThread()访问)。
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:IsthereanyperformancereasontodeclaremethodparametersfinalinJava?Whywouldonemarklocalvariablesandmethodparametersas“final”inJava?我正在使用PMD查看代码违规情况。在webService方法中,我有下面的代码publicServiceRequestgetData(){Statusstatus=newStatus();//code}PMD给我的建议是,这个局部变量状态可以声明为final
这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Javafinalmodifier这只是一个关于偏好的小问题。final修饰符的正确用法是什么?我注意到,从一个源到另一个源,我比其他人更倾向于使用它。我将它用于方法的参数、方法中的变量以及我所能做的一切。这是必要的还是我做得太过分了?引用:privatefinalintx;privatefinalinty;privatefinalintid;privatefinalintwidth;privatefinalintheight;publicWidget(finalintid,finalintx,finalint
我将如何显示该字段privatestaticfinalintDAMAGE=3;在UML图中?它应该显示为:-DAMAGE:3:int吗? 最佳答案 你这样显示。Private用减号表示。static属性用下划线表示。初始值显示为=.自从我了解到final表示一个常量,您将应用isConst显示为{readOnly}的属性.另见p.UML规范的111:::=[][‘/’][‘:’][‘[‘‘]’][‘=’][‘{‘[‘,’]*’}’][detailsomitted]在此上下文中不再相关,但无论如何保留它:回复。@granier关于标记