我正在检查StringTokenizer.java类,我想到了几个问题。我注意到其他类将使用的公共(public)方法调用了一些完成所有工作的私有(private)方法。现在,我知道OOD的原则之一是尽可能多地私有(private)化并隐藏所有实现细节。我不确定我是否完全理解这背后的逻辑。我了解将字段设为私有(private)以防止在其中存储无效值非常重要(这只是众多原因之一)。但是,当涉及到私有(private)方法时,我不确定它们为什么如此重要。例如,在StringTokenizer类的情况下,我们不能把所有的实现代码都放在公共(public)方法中吗?由于这些方法的API(即调用
给定一组类,找到最近的公共(public)父类(superclass)的最佳方法是什么?例如,给定以下内容:interfaceA{}interfaceB{}interfaceABextendsA,B{}interfaceC{}classAImplimplementsA{}classABImplimplementsAB{}classABImpl2implementsA,B{}classBCImplimplementsB,C{}我希望以下内容(并非详尽无遗):commonSuperclass(A,AImpl)==AcommonSuperclass(A,B,C)==Objectornull,
示例A(使用org.apache.commons.codec.binary.Base64):Base64.encodeBase64("foobar".getBytes());示例B(使用android.util.Base64):Base64.encode("foobar".getBytes(),Base64.DEFAULT);这些是否产生相同的字符串? 最佳答案 不,不同之处在于默认设置下,Android的Base64包含行终止符。要获得与Apache编码相同的结果,请使用Base64.NO_WRAP。
我正在尝试编写程序,但出现此编译器错误:Main.java:1:error:classWeatherArrayispublic,shouldbedeclaredinafilenamedWeatherArray.javapublicclassWeatherArray{^1error我检查了我的文件名,我的公共(public)类与我的.java文件相同。我该如何解决这个问题?这是我的代码:publicclassWeatherArray{publicstaticvoidmain(String[]args){//...}} 最佳答案 公共(
我正在阅读这篇文章WhywouldastaticnestedinterfacebeusedinJava?特别是第一个答案。在那个答案中,在接口(interface)字段上使用“public”或“publicfinal”这些词是多余的。我的问题是:为什么?我为什么要删除它们?如果我有这样的事情:publicinterfaceInt1{publicvoidadd();voidremove();}这是否意味着我希望add方法由任何类实现,而remove方法只能由我的同一个包的类实现? 最佳答案 Are“public”and“publicf
我注意到,如果我不在类之前编写public,它的工作方式与publicclass相同。我不明白为什么会这样?当我没有将类声明为public、private或protected时,它应该会显示错误。但它工作正常。是什么原因? 最佳答案 Ihavenoticedthatifdon'twritepublicbeforeaclassitsworkssameaslikeapublicclass.不,它没有。除非它是公共(public)的,否则不在同一个包中的其他代码将看不到该类。默认的可访问性(不能明确指定)是类(或其他成员)仅对同一包中的其
为什么Optional有of()和ofNullable()之类的方法,而不是公共(public)构造函数? 最佳答案 来自JoshuaBloch有效的Java,第2章。创建和销毁元素,1件:Considerstaticfactorymethodsinsteadofconstructors为什么?Oneadvantageofstaticfactorymethodsisthat,unlikeconstructors,theyhavenames.使用静态工厂方法,我们可以在方法定义中指定一些实例化行为。这使得API更易于使用,并且我们可以
我只是想知道是否可以从Play更改默认包。例如:我想将“controllers”包更改为“com.test.controllers”。我不知道这是否有任何意义,但我只想知道如果可能的话。我在play网站中没有找到与此相关的任何内容。 最佳答案 根据currentPlay2.0文档,现在可以这样做了:NotethatinPlay2.0,thecontrollers,modelsandviewspackagenameconventionsarenowjustthatandcanbechangedifneeded(suchasprefix
我正在尝试编码实现公共(public)接口(interface)的对象列表。涉及3个类和1个接口(interface):Community类(有一个方法:ListgetPeople();)Person接口(interface)(只有一种方法:StringgetName();)Girl类(实现Person)Boy类(实现Person)参见下面的代码。我想要一个看起来像这样的XML:JaneJohnJaneJohn或者可能:JaneJohn到目前为止,我得到的是这样的:JaneJohnJaneJohn我意识到我可以将元素更改为其他内容,但我希望元素名称是在Girl或Boy类中指定的名称。这
Java8包含一个名为Defendermethods的新功能。允许在接口(interface)中创建默认方法实现。首先,对于Java中的所有精简程序员来说,这是一个巨大的范式转变。我查看了BrianGoetz提供的JavaOne13演示文稿,他在其中讨论了Collections库中新的stream()和parallelStream()实现。为了在Collection接口(interface)中添加新方法,他们不可能只是添加一个新方法而不破坏以前的版本。所以他告诉我们,为了迎合这一点,添加了默认方法的新功能。publicinterfaceSimpleInterface{publicvoi