multiple-interface-implem
全部标签 在Java8中是否有任何类似方法的implements关键字?假设我有一个函数式界面:@FunctionalInterfaceinterfaceLongHasher{inthash(longx);}还有一个包含3个静态方法的库“实现”这个功能接口(interface):classLongHashes{staticintxorHash(longx){return(int)(x^(x>>>32));}staticintcontinuingHash(longx){return(int)(x+(x>>>32));}staticintrandomHash(longx){returnxorHash
我遇到了使用继承的不兼容返回类型的问题。publicinterfaceA{}publicinterfaceBextendsA{}publicinterfaceC{MapgetMapping();}publicinterfaceDextendsC{MapgetMapping();}有没有办法让它工作?现在编译器告诉我我正在接口(interface)D上“尝试使用不兼容的返回类型”。 最佳答案 我建议你使用interfaceC{MapgetMapping();}这表示“将String映射到A或A的子类型的映射”。这与Map兼容.
我想使用Java8Stream和Groupbyoneclassifier但有多个Collector函数。因此,在分组时,例如计算一个字段(或另一个字段)的平均值和总和。我试着用一个例子来简化一下:publicvoidtest(){Listpersons=newArrayList();persons.add(newPerson("PersonOne",1,18));persons.add(newPerson("PersonTwo",1,20));persons.add(newPerson("PersonThree",1,30));persons.add(newPerson("Person
正如我从各种Java书籍和教程中读到的,在接口(interface)中声明的变量是常量,不能被覆盖。我写了一个简单的代码来测试一下interfaceA_INTERFACE{intvar=100;}classA_CLASSimplementsA_INTERFACE{intvar=99;//testvoidprintx(){System.out.println("var="+var);}}classhello{publicstaticvoidmain(String[]args){newA_CLASS().printx();}}然后打印出来变量=99var是否被覆盖?我完全糊涂了。感谢您的任
如果目标类有多个接口(interface)方法,有没有办法使用lambda?还是在那种情况下您只需要使用匿名内部类? 最佳答案 不,没有。如果我正确理解了您的问题,您会希望将lambda用于具有多个抽象方法的接口(interface)。在那种情况下,答案是否定的:Afunctionalinterfaceisanyinterfacethatcontainsonlyoneabstractmethod.(Afunctionalinterfacemaycontainoneormoredefaultmethodsorstaticmethods
为什么我们在Java接口(interface)中使用publicstaticfinal声明实例变量?在Java接口(interface)中,所有变量都是隐式的publicstaticfinal。尽管它是在接口(interface)内声明的,但在常量变量中使用publicstaticfinal是一个好的编码习惯吗?例如:publicinterfaceTestInterface{publicstaticfinalStringEX_CONSTANT="ABC";publicstaticfinalintEX_INT_CONSTANT=5;publicstaticfinaldoubleEX_DO
我知道C++纯虚类,但Java更进一步,为多接口(interface)(而非实现)继承创建了一流的(无双关语意)概念,接口(interface)。它现在是主要静态类型语言的主要内容。Java发明了接口(interface)概念吗?或者它是否也作为第一类概念出现在较早的语言中? 最佳答案 这里是文章TheJavaLanguageEnvironment的摘要。Java语言中的接口(interface)只是对象声明它实现的方法的规范。接口(interface)不包括实例变量或实现代码——仅包括常量和方法的声明。Java语言中接口(inte
我认为不能,因为标记接口(interface)原则是没有任何方法,但由于默认方法不是抽象我不确定。 最佳答案 就Java而言,“标记”接口(interface)只是一个常规接口(interface)。因此,它可以像任何(Java-8)接口(interface)一样具有默认方法。现在,至于这是否违反了标记接口(interface)的原则,我不得不说是的。Marker接口(interface)应该充当某种标志,仅标识一个类满足某些外部条件。现在,它可以是一个标记接口(interface)并且具有抽象/默认方法,但它不再纯粹符合定义。来自
是否有理由使用100%抽象类而不是接口(interface)?您能否给我一个何时使用两者的好例子,以便我稍微掌握一下这个概念?更新:100%抽象类->只有抽象方法的抽象类。我很好奇php和java在这方面是否存在差异。更新2:即使我理解大部分原因我对概念比技术原因更感兴趣。 最佳答案 如果“100%抽象类”是指“没有具体方法的抽象类”,那么我可以想到一个原因:可见性。您可以定义要保护的抽象方法,因此它不是类的公共(public)API的一部分。然而,这似乎是一个奇怪的设计。我想到的另一件事是,当您希望向基类添加通用功能时-即,如果它
接口(interface)没有编译成MyInterface.java编译成.interface文件有什么具体原因吗?但是任何类都编译成.class文件。! 最佳答案 因为重点是表明该文件是Java字节代码(并且.class是为此选择的扩展名),而不是特定的语言结构。 关于java-为什么类编译为.class但接口(interface)不编译为.interface,我们在StackOverflow上找到一个类似的问题: https://stackoverflow