问题标签 [interface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
13998 浏览

java - 确定类的扩展接口

我需要确定表示接口的 Class 对象是否扩展了另一个接口,即:

根据规范Class.getSuperClass() 将为接口返回 null 。

如果此 Class 表示 Object 类、接口、原始类型或 void,则返回 null。

因此以下将不起作用。

有任何想法吗?

0 投票
26 回答
7508 浏览

oop - 为什么我似乎无法掌握接口?

有人可以为我揭开界面的神秘面纱或指出一些好的例子吗?我不断地看到接口弹出来这里和那里,但我从来没有真正接触过关于接口或何时使用它们的良好解释。

我在接口与抽象类的上下文中谈论接口。

0 投票
3 回答
512 浏览

oop - 糟糕的 OO 设计问题 - 我需要 Java 中的一些通用功能,但不知道如何实现它

我正在用 Java 开发一个小型 UML 类编辑器,主要是一个个人项目,如果我有时间在上面创建一个项目,它可能最终会出现在 SourceForge 上。

该项目非常先进:我可以创建类、移动它们、创建接口、创建链接等。

我正在处理的是用于设置类/接口属性和创建新类/接口的对话框。

例如,我有一个扩展 JDialog 的类。这是编辑类和接口的主要“窗口”(好吧,每个都有一个类)。它包含一个 JTabbedPane,而 JTabbedPane 又包含 JPanel。

这个 JPanel 实际上是自定义的。我创建了一个扩展 JPanel 的抽象类。此类使用组件(由其子类定义)并将它们的值添加到 JTable(也包含在 JPanel 中)。

例如,如果我想编辑一个类的属性,JPanel 将包含一个用于输入属性名称的 JTextField 以及另一个用于输入其类型的 JTextField。还有一组按钮用于处理在这些字段中输入的数据。当我单击“保存”时,我在 JTextFields 中输入的数据被添加到 JTable 中(à la Enterprise Architect)。扩展抽象类的具体类负责定义控制并决定当从 JTable 中添加或删除行时如何处理数据。然而,JTable 管理是抽象类的职责。

这是我的问题:在 OO 中,类有方法,接口也有方法。我告诉自己:我可以使用相同的具体自定义 JPanel(AttributesPanel(它扩展了我创建的抽象 JPanel 类))来存储类或接口的方法。

但是,该类需要保留我正在处理的类或接口的副本(作为属性)。这样,当向其中添加方法时,我可以调用editedClass.addMethod()(或editedInterface.addMethod())。问题是我无法判断我是在使用类还是在接口上工作。

我找到的解决方案很丑:在 AttributesPanel 类中保留一个属性editedClass 和一个属性editedInterface。根据我是在编辑类还是接口,其中一个属性将为空,而另一个则不会。

如果你问我,这很丑陋。事实上,我可以听到我的软件工程老师在地狱的第九圈燃烧(实际上,冻结)时痛苦地尖叫。

解决此设计问题的快速方法是创建一个名为“ObjectWithMethods”的接口,我的 Class 和 Interface 类将实现该接口。这样,我只需在我的 AttributesPanel 类中放置一个 ObjectWithMethods 参数。

但这是否意味着我应该创建一个名为“ObjectWithAttributes”或“ObjectWithBlahBlah”的类?我在这里看到了一些很好的“TheDailyWTF”潜力......此外,我认为我不应该修改我的域对象(类、接口、注释、关系(对于我的 UML 编辑器))或创建一个新接口只是为了一些 UI 考虑....

你怎么看?

我你需要更多的澄清(因为我现在很累,而且在这种心态下我往往做得很糟糕(尤其是英语 - 我的母语是法语)......),请问我会编辑这个问题。

干杯,

纪尧姆。

0 投票
7 回答
5230 浏览

c# - 如何将接口实现委托给C#中的其他类

假设以下类:

有必要在 MyEnum 中实现 IEnumerator 方法。但是是否可以将 IEnumerator 的实现直接“委托”或重定向到 _myList 而无需实现 IEnumerator 方法?

0 投票
15 回答
55688 浏览

java - 为什么接口中没有静态方法,但静态字段和内部类可以?[Java8 之前]

这里有一些关于为什么不能在接口中定义静态方法的问题,但它们都没有解决基本的不一致性:为什么可以在接口中定义静态字段和静态内部类型,但不能定义静态方法?

静态内部类型可能不是一个公平的比较,因为这只是生成新类的语法糖,但为什么是字段而不是方法呢?

反对接口中的静态方法的一个论点是它破坏了 JVM 使用的虚拟表解析策略,但这不应该同样适用于静态字段,即编译器可以内联它吗?

一致性是我想要的,Java 应该在接口中不支持任何形式的静态,或者它应该是一致的并允许它们。

0 投票
4 回答
3247 浏览

linq - Linq输出作为接口?

这是我试图做的代码:

Operator 实现了 IOperator,但出现以下编译错误:

我如何施放这个以获得我需要的东西?

0 投票
14 回答
344596 浏览

java - Java中Runnable和Callable接口的区别

Runnable在 Java 中设计并发线程时使用和接口有什么区别Callable,为什么要选择一个而不是另一个?

0 投票
12 回答
160662 浏览

c# - C# 接口。隐式实现与显式实现

在 C# 中隐式显式实现接口有什么区别?

什么时候应该使用隐式,什么时候应该使用显式?

两者有什么优点和/或缺点吗?


Microsoft 的官方指南(来自第一版框架设计指南)指出不建议使用显式实现,因为它会给代码带来意想不到的行为。

我认为这个指导方针在 IoC 之前的时代非常有效,当你不把东西作为接口传递时。

任何人都可以触及这方面吗?

0 投票
10 回答
2827 浏览

interface - 为触摸屏写作时要考虑的事项?

我正在开始一个新项目,该项目涉及为机器开发一个界面,该界面可以测量镜片的楔形和圆度,并将信息存储在数据库中并进行报告。我们很有可能会在这台机器上安装一个触摸屏,这样它就不需要鼠标或键盘了……

我没有任何开发全尺寸触摸屏的经验,所以我正在寻找你们的建议/提示/信息......

我可以想象你想让元素比正常的大一点……空间按钮多一点……像这样的东西……还有其他人要添加的吗?

0 投票
9 回答
4934 浏览

oop - 您应该将接口相对于它们的实现者放在哪个命名空间中?

具体来说,当您创建一个接口/实现器对,并且没有压倒一切的组织问题(例如接口应该放在不同的程序集中,即按照 s# 架构的建议)时,您是否有一种默认的方式来组织它们?命名空间/命名方案?

这显然是一个更多基于意见的问题,但我认为有些人对此进行了更多思考,我们都可以从他们的结论中受益。