草庐IT

human-interface-guidelines

全部标签

java - 一般地使用 Scala 闭包实现 Java 单一抽象方法接口(interface)?

据我了解,当它们最终出现时,我们将能够用Java闭包替代等效的单方法接口(interface)。是否有用于执行相同操作的标准Scala习惯用法-使用Scala闭包实现Java单一抽象方法接口(interface)?理想情况下,我希望以下内容能够自动运行test("Closure"){varevent:PropertyChangeEvent=nullvarlabel=newJLabel()label.addPropertyChangeListener({e:PropertyChangeEvent=>event=e})label.setText("fred")event.getNewVal

java - 如何在 Java 8 编译时确保方法签名 "implements"是功能接口(interface)

在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

java - "Attempting to use an incompatible return type"接口(interface)继承

我遇到了使用继承的不兼容返回类型的问题。publicinterfaceA{}publicinterfaceBextendsA{}publicinterfaceC{MapgetMapping();}publicinterfaceDextendsC{MapgetMapping();}有没有办法让它工作?现在编译器告诉我我正在接口(interface)D上“尝试使用不兼容的返回类型”。 最佳答案 我建议你使用interfaceC{MapgetMapping();}这表示“将String映射到A或A的子类型的映射”。这与Map兼容.

java - 覆盖接口(interface)的变量?

正如我从各种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是否被覆盖?我完全糊涂了。感谢您的任

java - 如何将 lambdas 用于具有多种方法的接口(interface)?

如果目标类有多个接口(interface)方法,有没有办法使用lambda?还是在那种情况下您只需要使用匿名内部类? 最佳答案 不,没有。如果我正确理解了您的问题,您会希望将lambda用于具有多个抽象方法的接口(interface)。在那种情况下,答案是否定的:Afunctionalinterfaceisanyinterfacethatcontainsonlyoneabstractmethod.(Afunctionalinterfacemaycontainoneormoredefaultmethodsorstaticmethods

java - JAVA 接口(interface)中实例变量的公共(public)静态最终声明

为什么我们在Java接口(interface)中使用publicstaticfinal声明实例变量?在Java接口(interface)中,所有变量都是隐式的publicstaticfinal。尽管它是在接口(interface)内声明的,但在常量变量中使用publicstaticfinal是一个好的编码习惯吗?例如:publicinterfaceTestInterface{publicstaticfinalStringEX_CONSTANT="ABC";publicstaticfinalintEX_INT_CONSTANT=5;publicstaticfinaldoubleEX_DO

java - Java 发明了接口(interface)吗?

我知道C++纯虚类,但Java更进一步,为多接口(interface)(而非实现)继承创建了一流的(无双关语意)概念,接口(interface)。它现在是主要静态类型语言的主要内容。Java发明了接口(interface)概念吗?或者它是否也作为第一类概念出现在较早的语言中? 最佳答案 这里是文章TheJavaLanguageEnvironment的摘要。Java语言中的接口(interface)只是对象声明它实现的方法的规范。接口(interface)不包括实例变量或实现代码——仅包括常量和方法的声明。Java语言中接口(inte

java - 可序列化的标记接口(interface)可以包含默认方法吗?

我认为不能,因为标记接口(interface)原则是没有任何方法,但由于默认方法不是抽象我不确定。 最佳答案 就Java而言,“标记”接口(interface)只是一个常规接口(interface)。因此,它可以像任何(Java-8)接口(interface)一样具有默认方法。现在,至于这是否违反了标记接口(interface)的原则,我不得不说是的。Marker接口(interface)应该充当某种标志,仅标识一个类满足某些外部条件。现在,它可以是一个标记接口(interface)并且具有抽象/默认方法,但它不再纯粹符合定义。来自

java - 100% 抽象类与接口(interface)

是否有理由使用100%抽象类而不是接口(interface)?您能否给我一个何时使用两者的好例子,以便我稍微掌握一下这个概念?更新:100%抽象类->只有抽象方法的抽象类。我很好奇php和java在这方面是否存在差异。更新2:即使我理解大部分原因我对概念比技术原因更感兴趣。 最佳答案 如果“100%抽象类”是指“没有具体方法的抽象类”,那么我可以想到一个原因:可见性。您可以定义要保护的抽象方法,因此它不是类的公共(public)API的一部分。然而,这似乎是一个奇怪的设计。我想到的另一件事是,当您希望向基类添加通用功能时-即,如果它

java - 为什么类编译为 .class 但接口(interface)不编译为 .interface

接口(interface)没有编译成MyInterface.java编译成.interface文件有什么具体原因吗?但是任何类都编译成.class文件。! 最佳答案 因为重点是表明该文件是Java字节代码(并且.class是为此选择的扩展名),而不是特定的语言结构。 关于java-为什么类编译为.class但接口(interface)不编译为.interface,我们在StackOverflow上找到一个类似的问题: https://stackoverflow