草庐IT

interface-design

全部标签

java - 为什么 Java 8 中的函数式接口(interface)只有一个抽象方法?

正如我们所知,在Java8中引入了函数式接口(interface)的概念。一个功能接口(interface)有一个抽象方法,并且可能有几个默认或静态方法。但是为什么一个函数式接口(interface)应该只有一个抽象方法呢?如果接口(interface)有不止一个抽象方法,为什么这不是功能接口(interface)? 最佳答案 引入了功能接口(interface),也称为单一抽象方法接口(interface),以促进Lambda函数。由于lambda函数只能提供1个方法的实现,因此功能接口(interface)必须只有一个抽象方法。

java - 仅从类和接口(interface)静态导入

我的代码在Eclipse中编译得很好,但是当我尝试从命令行编译时(通过我们基于ruby​​的构建系统),我收到此错误消息:staticimportonlyfromclassesandinterfaces建议不允许静态导入公共(public)静态字段。我应该寻找什么来帮助诊断这个问题?我该如何解决?更新:根据@Ted的要求,引用文件中的常量声明:publicstaticfinalStringNULL="";和引用文件中的(bowdlerized)引用:importstaticmy.path.MyClass.NULL; 最佳答案 我的猜

java - 如何使用 Guice 获取接口(interface)的所有实现者/子类?

使用Spring,您可以定义一个数组属性,并让Spring注入(inject)从给定类型派生的每个(@Component)类之一。在Guice中有对应的吗?或者添加此行为的扩展点? 最佳答案 这看起来像是Guice的用例MultiBinder.你可以有这样的东西:interfaceYourInterface{...}classAimplementsYourInterface{...}classBimplementsYourInterface{...}classYourModuleextendsAbstractModule{@Over

java - 查找类递归扩展或实现的所有类和接口(interface)

我想知道是否有一种简单的方法可以确定Java类递归扩展或实现的类型的完整列表?例如:classFooextendsBarimplementsI1,I2{...}classBarimplementsI3{...}interfaceI1extendsI4,I5{...}interfaceI2{...}interfaceI3{...}interfaceI4{...}interfaceI5{...}classClassUtil{publicstaticSet>getAllExtendedOrImplementedTypesRecursively(Classclazz){???}}imports

java - 为什么 List 接口(interface)扩展 Collection 接口(interface)?

Collection接口(interface)有多个方法。List接口(interface)扩展了Collection接口(interface)。它声明与Collection接口(interface)相同的方法?为什么会这样?例如interfaceCollectionextendsIterable{publicabstractintsize();publicabstractbooleanisEmpty();publicabstractbooleancontains(java.lang.Object);publicabstractjava.util.Iteratoriterator();

java - 使用接口(interface)有什么好处

这个问题在这里已经有了答案:InterfacesinJava-whataretheyfor?[duplicate](9个回答)关闭9年前。假设你有一个接口(interface)publicinterfaceChange{voidupdateUser();voiddeleteUser();voidhelpUser();}我读到接口(interface)是Java实现多重继承的方式。你实现了一个接口(interface),然后你就可以访问它的方法。我不明白的是,这些方法在接口(interface)中没有任何主体,所以你需要在你的类中给它们一个主体。因此,如果您的接口(interface)由

java - 如何在 Eclipse 中将顶级类或接口(interface)重构为内部类或接口(interface)?

我有一个界面,我想将其移入另一种类型。有什么方法可以让Eclipse帮助我进行更改?同样的更改也可以应用于一个类以将其移动到另一个类中。基本上,我正在寻找与将成员类型转换为顶级相反的方法。我希望它是Move,但它只提供包作为目标。 最佳答案 剪切接口(interface)并将其粘贴到要嵌入它的类中如果内部类无需外部类实例即可访问,请添加static关键字。在PackageExplorer中,选择您的项目并右键单击>source>organizeimports我认为这会导致大部分(如果不是全部)编译错误。

java - 为什么在 Java 8 中向接口(interface)添加默认方法是一个不错的设计选择,有哪些替代方案

这个问题在这里已经有了答案:PurposeofDefaultorDefendermethodsinJava8(5个答案)关闭6年前。我刚刚开始学习Java,所以我很难了解可能的替代方案以及此类设计决策的影响。Java8为接口(interface)添加了默认方法特性,允许接口(interface)有一个实现。这允许在不破坏客户端的情况下使用新方法扩展现有接口(interface),以向后兼容的方式随着时间的推移改进接口(interface)。然而,在给定默认实现的情况下,此类扩展有些受限,并且很可能使用接口(interface)的现有接口(interface)方法或库方法来实现。所以我的

java - 自动生成非泛型接口(interface)实现

我有接口(interface)publicinterfaceObjectBuilder{EbuildObject();}此外,该项目有很多实现接口(interface)的非泛型版本的类。classMyClassBuilderimplementsObjectBuilder{publicMyClassbuildObject(){/**/}}是否可以自动转换所有这些类,以便它们实现接口(interface)的通用版本?对此进行自动重构:classMyClassBuilderimplementsObjectBuilder{publicMyClassbuildObject(){/**/}}Int

java - 方法返回类型以实现多个接口(interface)

是否可以指定一个返回实现两个或多个接口(interface)的对象的方法?假设我们有以下接口(interface):interfaceFooBar{[Foo]&[Bar]getFooBar();}interfaceFoo{voiddoFoo();}intefaceBar{voiddoBar();}FooBar的实现者需要提供方法getFooBar()来返回一个类型的实例,该实例充满了Foo以及栏。到目前为止我尝试的是使用泛型:interfaceFooBar{TgetFooBar()}classSomeImplementorimplementsFooBar{privateFooAndBa