这是我已经有一段时间的问题了:像这样公开公开字段什么时候有意义?publicclassSomeClass(){publicintbacking;}这样做的缺点(除了激怒OOP精英之外)是,如果您需要在此数据之上添加任何逻辑,则必须对API进行重大更改。我想这就是精英们所谈论的。长期以来,Java和C#的最佳实践是使用getter/setter或属性来访问字段。publicclassSomeClass(){privateintbacking;publicintgetBacking(){returnbacking;}publicvoidsetBacking(intv){backing=v;
昨天我在Tomcat8上部署我的Java8webapp后遇到了一个有趣的问题。我更感兴趣的是了解为什么会发生这种情况,而不是如何解决这个问题。但是,让我们从头开始吧。我有两个类定义如下:Foo.javapackagepackage1;abstractclassFoo{publicStringgetFoo(){return"foo";}}Bar.javapackagepackage1;publicclassBarextendsFoo{publicStringgetBar(){return"bar";}}如您所见,它们在同一个包中,最终都在同一个jar中,我们称之为commons.jar。
我们正在开发一个由两个Eclipse项目组成的Web应用程序。一个项目是基于HTTP的RESTfulWeb服务;另一个项目是一个网站。两者都将作为WAR部署。最初,两者都将部署在同一个应用程序服务器实例下,但最终它们将部署在不同的盒子上。网站应用使用RESTfulWS应用。显然,会有两个项目共有的代码——特别是领域类。例如,可能有一个位于/users的资源,它公开了对User对象的CRUD操作;为了更新用户,网站应用程序会将一个XML编码的用户对象发布到/users。对/users/1执行GET将返回一个XML编码的用户对象。显然,由于各种原因,在这两个项目中都有一个User类是非常愚
在Java中:publicinterfaceFoo{publicstaticfinalintBar=0;}在Scala中,我如何创建一个具有Bar的traitFoo,并且我可以将其访问为:Foo.Bar? 最佳答案 您可以创建一个伴随对象(使其等效于静态)并使用finalval关键字在其中定义变量(使其等效于最终常量):traitFoo{}objectFoo{finalvalBar=0}更多关于这个here 关于java-Scalatrait-是否有Java接口(interface)公共
当我用public方法覆盖protected方法时,Java编译器不会报错。这里到底发生了什么?由于父方法的可见性较低,是覆盖还是隐藏了父方法? 最佳答案 子类总是可以扩展访问修饰符,因为它仍然是父类(superclass)的有效替代。来自Java规范关于RequirementsinOverridingandHiding:Theaccessmodifier(§6.6)ofanoverridingorhidingmethodmustprovideatleastasmuchaccessastheoverriddenorhiddenmet
我一直在阅读两篇文章(1)(2)在javaworld.com上,关于所有类字段应该是私有(private)的,而getter/setter方法同样糟糕。对象应该对其拥有的数据进行操作,而不是允许对其进行访问。我目前正在为ConnectFour完成大学作业。.在设计程序时,玩游戏的代理需要访问棋盘的状态(这样他们就可以决定要移动什么)。他们还需要将此举动传递给游戏,以便将其验证为合法举动。在决定要移动什么的过程中,碎片被分组为带有起点和终点的威胁。Board、Threat和Point对象实际上并没有做任何事情。它们只是用来存储可以以人类可读方式访问的相关数据。在设计之初,我将板上的点表示
私有(private)jre和公共(public)jre有什么区别?有没有关于这个主题的官方论文?我没有找到关于这个主题的任何问题。我也无法在周围找到令人满意的东西。 最佳答案 AJREisnothingbutafolderthatcontainsJVMexecutables,settingfiles,requiredlibfiles,andextensions.YoucaninstallmultipleJREsonyoursystemSungenerallyinstallsversionsinC:\ProgramFiles\Jav
我遇到了一个问题语句来查找给定两个子字符串之间的所有公共(public)子字符串,这样在每种情况下您都必须打印最长的子字符串。问题陈述如下:Writeaprogramtofindthecommonsubstringsbetweenthetwogivenstrings.However,donotincludesubstringsthatarecontainedwithinlongercommonsubstrings.Forexample,giventheinputstringseatsleepnightxyzandeatsleepabcxyz,theresultsshouldbe:eat
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭上个月。社区在上个月审核了是否重新开放这个问题并关闭:原始关闭原因未解决Improvethisquestion在我多年的编程生涯中,我经常制作简单地将一些变量与它们的setter和getter组合在一起的类。我已经看到根据使用它们的上下文将这些类型的对象称为值对象、域对象或模型对象。最适合通用用法的术语似乎是数据传输对象(DTO)。这描述了一个只包含访问器和修改器的POJO。我刚刚编写了一个这样的对象,其中包含大约50个字段,用于在图
如果Javadoc未满足特定方法或字段的要求,Eclipse能够提供警告。这些字段/方法可以按范围(公共(public)、protected等)分组。在准备我的软件以提交给大学或其他什么时,我发现这确实非常有用。这在IntelliJ中是不可能的吗?请注意,我知道您可以在IntelliJ中的方法之前点击“/**”,它会填写它。这不正是我所追求的。另请注意,我使用的是IntelliJ13.01社区版。 最佳答案 对于旧版本的IntelliJ:首选项>检查>JavaDoc问题>声明有JavaDoc问题对于较新版本的IntelliJ:文件>