Questions tagged «interface»

接口是指与组件交互的指定点。接口在硬件和软件级别均适用。---它也指语言元素“接口”,这是Java,C#和类似语言中单继承的唯一例外。

4
为什么在实现类上不强制在接口上定义的C#4可选参数?
我注意到,使用C#4中的可选参数,如果您在接口上指定了可选参数,则不必在任何实现类上将该参数设为可选: public interface MyInterface { void TestMethod(bool flag = false); } public class MyClass : MyInterface { public void TestMethod(bool flag) { Console.WriteLine(flag); } } 因此: var obj = new MyClass(); obj.TestMethod(); // compiler error var obj2 = new MyClass() as MyInterface; obj2.TestMethod(); // prints false 有谁知道为什么可选参数设计成这种方式工作? 一方面,我认为覆盖接口上指定的任何默认值的功能很有用,尽管说实话,我不确定您是否应该甚至可以在接口上指定默认值,因为这应该由实现决定。 另一方面,这种断开连接意味着您不能始终交替使用具体的类和接口。当然,如果在实现上指定了默认值,这不会有问题,但是如果您将具体类公开为接口(例如,使用某些IOC框架注入具体类),那么实际上就没有问题了。具有默认值的点作为调用方,无论如何都必须始终提供它。


13
特性与接口
我最近一直在尝试研究PHP,但发现自己迷上了特质。我了解水平代码重用的概念,并且不想一定要从抽象类继承。我不明白的是:使用特征和接口之间的关键区别是什么? 我曾尝试搜索一篇不错的博客文章或文章,解释何时使用一种或另一种,但到目前为止,我发现的示例似乎是如此相似,以至于完全相同。
344 php  interface  traits 


11
Java接口命名[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 大多数OO语言的接口名称都以大写的I开头,为什么Java不这样做呢?不遵守该公约的理由是什么? 为了说明我的意思,如果我想拥有一个用户界面和一个用户实现,那么在Java中我有两种选择: 类=用户,接口= UserInterface 类= UserImpl,接口=用户 在大多数语言中: 类=用户,接口= IUser 现在,您可能会争辩说,您总是可以为用户实现选择一个最具描述性的名称,问题就消失了,但是Java将POJO方法推向了事物,并且大多数IOC容器广泛使用DynamicProxies。这两件事在一起意味着您将通过单个POJO实现拥有许多接口。 因此,我想我的问题可以归结为:“是否值得遵循更广泛的接口命名约定,尤其是考虑到Java框架的发展方向?”

5
java中的interface和@interface有什么区别?
自从90年代末在大学期间使用JBuilder以来,我还没有接触过Java,所以我有点与时俱进-无论如何,本周我一直在从事一个小型Java项目,并使用Intellij IDEA作为我的IDE ,与我的常规.Net开发有所不同。 我注意到它支持添加接口和@interface,什么是@interface,它与普通接口有何不同? public interface Test { } 与 public @interface Test { } 我做了一些搜索,但是找不到大量有用的有关@interface的信息。


13
使用Typescript进行接口类型检查
这个问题是使用TypeScript进行类类型检查的直接类比 我需要在运行时找出类型为any的变量是否实现了接口。这是我的代码: interface A{ member:string; } var a:any={member:"foobar"}; if(a instanceof A) alert(a.member); 如果在打字稿游乐场输入此代码,则最后一行将被标记为错误,“名称A在当前作用域中不存在”。但这不是事实,该名称确实存在于当前作用域中。我什至可以将变量声明更改为var a:A={member:"foobar"};无编辑者的抱怨。浏览完网络并在SO上找到另一个问题后,我将接口更改为一个类,但是后来我无法使用对象文字来创建实例。 我想知道类型A如何会消失,但是查看生成的javascript可以解释问题: var a = { member: "foobar" }; if(a instanceof A) { alert(a.member); } 没有将A表示为接口,因此无法进行运行时类型检查。 我知道javascript作为一种动态语言没有接口的概念。有什么方法可以对接口进行类型检查吗? 打字稿操场的自动补全表明,打字稿甚至提供了一种方法implements。如何使用?

16
Java Pass方法作为参数
我正在寻找一种通过引用传递方法的方法。我知道Java不会将方法作为参数传递,但是,我想找到一种替代方法。 有人告诉我接口是将方法作为参数传递的替代方法,但我不了解接口如何通过引用充当方法。如果我理解正确,那么接口就是一组未定义的抽象方法。我不想发送每次都需要定义的接口,因为几种不同的方法可以使用相同的参数调用同一方法。 我要完成的工作与此类似: public void setAllComponents(Component[] myComponentArray, Method myMethod) { for (Component leaf : myComponentArray) { if (leaf instanceof Container) { //recursive call if Container Container node = (Container) leaf; setAllComponents(node.getComponents(), myMethod); } //end if node myMethod(leaf); } //end looping through components } 调用如: setAllComponents(this.getComponents(), changeColor()); setAllComponents(this.getComponents(), changeSize());
277 java  interface 



30
接口-有什么意义?
界面的原因确实使我难以理解。据我了解,这是针对C#中不存在的不存在的多重继承的一种解决方法(或者有人告诉我)。 我所看到的是,您预先定义了一些成员和函数,然后必须在类中重新定义它们。从而使接口冗余。只是感觉像语法...好吧,对我而言是垃圾(请不要冒犯。垃圾就像无用的东西一样)。 在下面给出的示例中,该示例是在堆栈溢出时从另一个C#接口线程获取的,我只是创建一个称为Pizza的基类而不是一个接口。 简单示例(来自不同的堆栈溢出贡献) public interface IPizza { public void Order(); } public class PepperoniPizza : IPizza { public void Order() { //Order Pepperoni pizza } } public class HawaiiPizza : IPizza { public void Order() { //Order HawaiiPizza } }
269 c#  .net  interface 

4
显式调用Java中的默认方法
Java 8引入了默认方法,以提供扩展接口的功能,而无需修改现有的实现。 我想知道当由于不同接口中的默认实现冲突而导致该方法的默认实现被重写或不可用时,是否可以显式调用该方法的默认实现。 interface A { default void foo() { System.out.println("A.foo"); } } class B implements A { @Override public void foo() { System.out.println("B.foo"); } public void afoo() { // how to invoke A.foo() here? } } 考虑上面的代码,您将如何A.foo()从B类的方法调用?

11
为什么在Java中使用静态嵌套接口?
我刚刚在我们的代码库中找到了一个静态嵌套接口。 class Foo { public static interface Bar { /* snip */ } /* snip */ } 我以前从未见过。原始开发人员无法获得。因此,我不得不问: 静态接口背后的语义是什么?如果我删除,会发生什么变化static?为什么有人会这样做?
235 java  interface  static 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.