我们如何在代码中使用私有(private)接口(interface)的方法?抽象类是无法实例化的东西。所以,如果我们需要使用抽象类的方法,我们可以继承并使用它们的方法。但是,当我们谈论接口(interface)时,我们需要实现它们才能使用它们的方法。 最佳答案 private关键字表示“同一类(class)的任何人”:publicclassFoo{privateinterfaceX{...}privateclassX1implementsX{...}}这意味着在Foo中声明的所有类可以使用接口(interface)Foo.X.一个常
这是java.util.ArrayList的片段:/***ConstructsanIndexOutOfBoundsExceptiondetailmessage.*Ofthemanypossiblerefactoringsoftheerrorhandlingcode,*this"outlining"performsbestwithbothserverandclientVMs.*/privateStringoutOfBoundsMsg(intindex){return"Index:"+index+",Size:"+size;}这是来自com.google.collect.Precondit
既然抽象类不能被实例化,而且protected成员对子类总是可见的,那么它的构造函数是public还是似乎没有区别em>protected。有没有公共(public)构造函数与protected构造函数相比有所不同的示例?我通常更喜欢适用的最严格的访问级别。 最佳答案 不,没有充分的理由为抽象类创建公共(public)构造函数:如果不首先对其进行子类化,则无法实例化抽象类,并且该语言会为您处理相关的极端情况。特别是,如果您要匿名子类化您的抽象类,这意味着您无法在子类中提供您自己的构造函数,该语言将根据抽象基类的protected构造
我有一个spring应用程序,我想在像这样的Controller上创建一个单一测试。问题是Wrapper类是private内部类,所以在测试中不理解Wrapper。是否可以在不更改Controller类的情况下使用Mockito模拟它。我可以使用prepareData()来获取对象的实例,但我不知道这是否可用于模拟该对象。谢谢@ControllerpublicclassController{privateclassWrapper{privateObject1field1;privateObject2field2;privateObject1method1(){...}privateOb
很抱歉提出新手问题。通过引用与值传递很难!所以我有一个具有相当大数据结构的类——多维数组。我需要从另一个类访问这些数组。我可以只公开数组并执行经典的objectWithStructures.structureOne。或者,我可以做setter/getter:添加一个像publicint[][][]getStructureOne()这样的方法。有一个getter会复制多维数组吗?或者它是否通过引用传递它而你不能改变引用的对象?我担心内存和性能。但是公开数据结构,如果不导致复制则速度更快,这似乎是一种糟糕的编码习惯。附录:那么当我使用getter方法返回对对象(例如数组)的引用时,该对象是
假设我有这个层次结构:publicabstractclassAbstractEntityimplementsCloneable{...publicAbstractEntityclone(){Clonercloner=newCloner();AbstractEntitycloned=cloner.deepClone(this);returncloned;}}publicclassEntityAextendsAbstractEntity{...}这很好用,我能做到:EntityAe1=newEntityA();EntityAe2=(EntityA)e1.clone();但我必须手动进行类型
abstractclassA{privateinta;publicA(intx){a=x;}publicintgetA(){returna;}}classBextendsA{publicB(intx){super(x);}}classTestB{publicstaticvoidmain(Stringargs[]){Bb=newB(5);System.out.println(b.getA());}}在这种情况下,当我说Bb=newB(5);时,调用父类(superclass)构造函数并将私有(private)实例变量初始化为5。所以当我说getA()在B引用的b对象上返回5。由于clas
我一直在使用Java8VS对lambda性能进行一些演示测试。Java8公共(public)函数。案例如下:我有一个10人的名单(5男5女)。我想知道哪个女人的年龄在18到25岁之间现在,当我执行这些步骤一百万次时,结果将是:LambdawithForEachtook:395ms(396msusingJUnit)Publicfunctionstook:173ms(169msusingJUnit)LambdawithCollecttook:334ms(335msusingJUnit)现在我没想到lambda的执行时间比常规函数长两倍到六倍。所以,现在我很想知道我是否在这里遗漏了什么。可以
更新:这个我还是不太清楚。我试图找到JLS来描述这种行为。相反,我在8.3oftheJLS中找到了这句话:Memberclassdeclarations(§8.5)describenestedclassesthataremembersofthesurroundingclass.Memberclassesmaybestatic,inwhichcasetheyhavenoaccesstotheinstancevariablesofthesurroundingclass;ortheymaybeinnerclasses(§8.1.3).这是否意味着嵌套静态类不应该访问外部类变量?我在哪里可以找
通常我在各种书籍中发现main方法应该是公共(public)的,因为它应该对类加载器可见。但是JVM执行(或提供特殊处理)各种私有(private)方法,例如ObjectOutputStream中的readObject/writeObject方法。 最佳答案 很明显,您的程序的入口点应该是可见的。 关于java-为什么必须将main方法声明为public...为什么JVM不能执行privatemain方法,我们在StackOverflow上找到一个类似的问题: