草庐IT

java - 如何使用 final 方法模拟一个类?

假设我有A类classA{finalStringfoo(){//..computingresult,contactingdatabase,whatever..return"somecomputedvalue";}//...andabazillionothermethods,someofthemfinal.}现在我有B类classB{StringmethodIWantToTest(Aa){Stringoutput=a.foo();//...whateverthismethoddoes,e.g.:output+="_suffix";returnoutput;}}我将如何对这个方法进行单元测

java - 为什么所有匿名类都是隐式最终的?

根据JLS:15.9.5AnonymousClassDeclarationsAnanonymousclassdeclarationisautomaticallyderivedfromaclassinstancecreationexpressionbythecompiler.Ananonymousclassisneverabstract(§8.1.1.1).Ananonymousclassisalwaysaninnerclass(§8.1.3);itisneverstatic(§8.1.1,§8.5.2).Ananonymousclassisalwaysimplicitlyfinal(§

java - 线程中的最终字段语义

这是来自JLS17.5:Theusagemodelforfinalfieldsisasimpleone.Setthefinalfieldsforanobjectinthatobject'sconstructor.Donotwriteareferencetotheobjectbeingconstructedinaplacewhereanotherthreadcanseeitbeforetheobject'sconstructorisfinished.Ifthisisfollowed,thenwhentheobjectisseenbyanotherthread,thatthreadwill

java - 如果一个类被声明为 final 是否有必要将方法声明为 final

我正在阅读一些内容,需要对最终类和方法进行一些说明。我的理解是,将一个类声明为final会阻止该类被扩展。因此,是否有必要将最终类中的方法声明为最终的?在我看来,如果类不能扩展,则没有必要将方法声明为final。 最佳答案 如果类被声明为final,则没有必要将方法声明为final,因为类已经不能被扩展。 关于java-如果一个类被声明为final是否有必要将方法声明为final,我们在StackOverflow上找到一个类似的问题: https://stac

java - 在 JTree 节点中动态调整 JTextField 的大小

我正在使用带有一些JLabel和JTextFields的JPanel作为JTree中的编辑器和渲染器。用户可以单击任何JTextField并修改文本。一切正常。我所缺少的是如何在用户输入时动态调整(增大)JTextField的大小。下面是一个说明问题的小示例程序。单击即“颜色”并输入一些其他字符。JTextField保持其大小,这是预期的,但我希望它增大和缩小以适应文本。我尝试了不同的布局管理器,计算了JTextField和JPanel的preferredSize,调用了invalidate()和JPanel以及Tree等等,但没有成功。有什么想法吗?importjava.awt.Co

java - 为什么从类构造函数调用的方法应该是最终的?

这个问题在这里已经有了答案:InJava,istherealegitimatereasontocallanon-finalmethodfromaclassconstructor?(4个答案)关闭8年前。我是Java新手,我试图理解Oracle网站教程中的以下行:https://docs.oracle.com/javase/tutorial/java/IandI/final.htmlMethodscalledfromconstructorsshouldgenerallybedeclaredfinal.Ifaconstructorcallsanon-finalmethod,asubclas

java - 使用 Spring Hateoas 可分页

我有一个使用Hateoas的Rest-Service,它在没有分页的情况下工作。现在我正在制作可分页的Json。我使用Spring-Hateoas的开箱即用功能来完成它。但现在我坚持使用它,我想它真的没有很好的记录,如果有的话。我的JSON如下所示:{"_embedded":{"vertragResourceList":[{"identifier":728,"auszubildender":"Rumm","beruf":"Landwirt/in","betrieb":"MitterbauerJohann","betriebsNummer":"e12d0949-67ae-4134-9dc

java - 同步:为什么优先锁定一个private final静态对象而不是类的类对象?

简单问题:为什么这是首选:publicclassFoo{finalprivatestaticObjectfoo=newObject();publicstaticvoiddoSomething(){synchronized(Foo.foo){//code}}}关于这个:publicclassFoo{publicstaticvoiddoSomething(){synchronized(Foo.class){//code}}}或者这个:publicclassFoo{publicsynchronizedstaticvoiddoSomething(){//code}}?对我来说,这些看起来基本相

java - 能见度保证

我已经阅读了JCIP对16.3节“初始化安全”的一些解释,但仍然不清楚。该部分指出“此外,任何可以通过正确构造的对象的final字段访问的变量(例如final数组的元素或final字段引用的HashMap的内容)也保证是对其他线程可见。”所以如果我有以下可变对象:publicfinalclassContainer{privateStringname;privateintcupsWon;privatedoublenetWorth;publicContainer(Stringname,intcupsWon,doublenetWorth){this.name=name;this.cupsWo

java - 如何对不可变类实例之间的循环建模?

不可变类很棒,但有一个大问题我想不出一种合理的方法来解决-循环。classFriend{Setfriends();}一个人如何模拟我有你作为friend,而我又有我作为friend?不变性这个来自外界的类肯定是​​不可变的。为了进行相等性检查,内部保存的值应该保持不变。 最佳答案 [[[编辑:添加代码以演示完全不可变的概念]]]这就是构建器非常适合不可变对象(immutable对象)的原因-它们允许在构建过程中使用可变性,以便在您“卡住”它之前设置好所有内容。在这种情况下,我猜你需要一个支持创建循环的friend生成器。finalF