interface 相关问题

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

Cytoscape 任务在程序启动时运行并将窗口缩小到不可读的大小

我最近安装了 cytoscape v3.10.0,启动程序时,窗口正常打开,然后标记为 cytoscape 任务的辅助窗口打开运行某些内容,并且 cytoscape 界面 shri...

回答 1 投票 0

标记注释与标记接口

在阅读有关标记接口的内容时,我偶然发现了以下站点:第 37 项:使用标记接口来定义类型 在这里,根据 Joshua Bloch 的说法,Marker interfa 有两个优点......

回答 2 投票 0

直接从实现的类访问接口中的虚拟函数

假设我有以下功能: 公共接口 MyInterface { int GetNumber(); 虚拟 int GetTwiceNumber() => 2 * GetNumber(); } 我可以在类中实现接口...

回答 1 投票 0

泛型和工厂模式

我正在尝试实现一个基工厂类,它具有 Unity 中具有不同 ID 的不同实例的列表。我的意思是,它将有一个预制件列表。 我将实现许多不同的事实......

回答 1 投票 0

为什么应该首选 Java 类的接口?

PMD 将报告以下违规行为: ArrayList 列表 = new ArrayList(); 违规行为是“避免使用‘ArrayList’等实现类型;而是使用接口”。 ... PMD 将举报以下违规行为: ArrayList<Object> list = new ArrayList<Object>(); 违规行为是“避免使用‘ArrayList’等实现类型;而是使用接口”。 以下行将纠正违规行为: List<Object> list = new ArrayList<Object>(); 为什么要用后者加List而不是ArrayList? 在具体类型上使用接口是良好封装和松散耦合代码的关键。 在编写自己的 API 时遵循这种做法甚至是一个好主意。如果这样做,您稍后会发现向代码添加单元测试(使用模拟技术)以及在将来需要时更改底层实现会更容易。 这是一篇关于该主题的好文章。 希望有帮助! 这是首选方法,因为您可以将代码与列表的实现分离。使用该接口,您可以轻松地将实现(本例中为 ArrayList)更改为另一个列表实现,而无需更改任何其余代码,只要它仅使用 List 中定义的方法即可。 总的来说,我同意将接口与实现解耦是一件好事,并且将使您的代码更易于维护。 但是,您必须考虑一些例外情况。通过接口访问对象会增加一个额外的间接层,这会使您的代码变慢。 出于兴趣,我进行了一项实验,对 100 万长度的 ArrayList 生成了 100 亿次顺序访问。在我的 2.4Ghz MacBook 上,通过 List 接口访问 ArrayList 平均需要 2.10 秒,而声明 ArrayList 类型时平均需要 1.67 秒。 如果您正在处理大型列表、内部循环深处或经常调用的函数,那么这是需要考虑的事情。 ArrayList 和 LinkedList 是 List 的两种实现,List 是有序的项目集合。从逻辑上讲,使用 ArrayList 还是 LinkedList 并不重要,因此您不应该将类型限制为那样。 这与 Collection 和 List 形成对比,它们是不同的东西(List 意味着排序,Collection 则不然)。 为什么要使用后者配合List而不是ArrayList? 这是一个很好的实践:针对接口进行编程而不是实现 通过将 ArrayList 替换为 List,您可以根据您的业务用例在将来更改 List 实现,如下所示。 List<Object> list = new LinkedList<Object>(); /* Doubly-linked list implementation of the List and Deque interfaces. Implements all optional list operations, and permits all elements (including null).*/ 或 List<Object> list = new CopyOnWriteArrayList<Object>(); /* A thread-safe variant of ArrayList in which all mutative operations (add, set, and so on) are implemented by making a fresh copy of the underlying array.*/ 或 List<Object> list = new Stack<Object>(); /* The Stack class represents a last-in-first-out (LIFO) stack of objects.*/ 或 其他一些List具体实施。 List接口定义了合约,List的具体实现是可以改变的。这样,接口和实现是松散耦合的。 相关SE问题: “编程到接口”是什么意思? 即使对于局部变量,在具体类上使用接口也会有所帮助。您最终可能会调用接口外部的方法,然后在必要时很难更改 List 的实现。 此外,最好在声明中使用最不具体的类或接口。如果元素顺序不重要,请使用集合而不是列表。这为您的代码提供了最大的灵活性。 您的类/接口的属性应该通过接口公开,因为它为您的类提供了要使用的行为契约,而不管实现如何。 但是... 在局部变量声明中,这样做没有什么意义: public void someMethod() { List theList = new ArrayList(); //do stuff with the list } 如果是局部变量,则使用类型即可。它仍然可以隐式向上转换为其适当的接口,并且您的方法应该希望接受其参数的接口类型,但对于局部变量,使用实现类型作为容器是完全有意义的,以防万一您确实需要实现 -具体功能。 一般来说,对于您的代码行来说,打扰接口是没有意义的。但是,如果我们谈论 API,就有一个非常好的理由。我有小班课 class Counter { static int sizeOf(List<?> items) { return items.size(); } } 在这种情况下需要使用接口。因为我想计算每种可能的实现的大小,包括我自己的自定义。 class MyList extends AbstractList<String>...。 接口暴露给最终用户。一个类可以实现多个接口。暴露于特定接口的用户可以访问该特定接口中定义的某些特定行为。 一个接口也有多个实现。基于场景的系统将适用于不同的场景(接口的实现)。 如果您需要更多解释,请告诉我。 接口在调试器视图中通常比具体类具有更好的表示形式。

回答 10 投票 0

方法参数的 php 接口联合类型

我有一个接口和两个实现它的类。对于接口中的一种方法,两种实现需要不同的参数。一种方法是根本不使用类型或使用

回答 1 投票 0

自定义网页界面/设计

对于背景来说,一般来说,我是相当专业的编码员,但对于 .net 来说,在控制台/应用程序开发方面更是如此。我有一个关于网站的好主意,但我不确定哪种工具/方法...

回答 1 投票 0

如何在c++中获取所有网络接口名称和信息

是否可以使用c++获取Linux中所有网络接口(无论是上还是下)名称和可用信息?我的意思是一个仅使用 API 来获取接口名称的程序。 “ioctl”是否打印 d...

回答 2 投票 0

为什么Event接口在Javascript中有一个构造函数以及如何实现基于DOM的自定义事件?

我对 JavaScript 比较陌生,在尝试实现用于 DOM 操作的自定义事件时,我在 MDN Web 文档中遇到了 Event 接口。引起我注意的是它是defi...

回答 1 投票 0

Android/Java:使用界面从另一个类/线程编辑文本视图

我想从 MainActivity 类编辑 textview 文本,我放置了一个连接到接口的函数,然后该函数进入另一个名为 JobService 的类(用于发送带有 thre 内容的类...

回答 1 投票 0

在typescript中使用lodash groupBy方法时在接口中引用另一个接口

我有一个数据库模型接口用户。我想获取所有用户并将它们存储在 lodash 中使用 groupBy() 的键值对中,如下所示: const users: {[_id: string]: User} = _.groupBy(await db.Us...

回答 1 投票 0

有没有办法将类型与“关键”更改相匹配?

例如我写了下面的代码。 函数({ 项目: [ { 事件:'a', 回调:(数据)=> { }, }, { 事件:'b', 回调:(数据)=> { }, ...

回答 1 投票 0

空接口有什么用

我正在看nServiceBus并走过这个接口 命名空间 NServiceBus { 公共接口IMessage { } } 空接口有什么用?

回答 12 投票 0

AIDL文件没有生成Java文件

我定义了一个 AIDL android 接口来提供其他应用程序的服务。 我的问题是,在我的项目中,Android 不会从此 AIDL 生成 Java 文件。 请注意,

回答 6 投票 0

实现接口类的纯虚方法的方法也应该声明为虚方法吗? [重复]

我读到了关于这个问题的不同意见。假设我有一个带有一堆纯虚方法的接口类。我在实现接口的类中实现这些方法,并且我......

回答 7 投票 0

条件类型中类型和接口有什么区别?

类型处理程序 = { [名称:字符串|数字]: () => 无效 } 输入 H1 = { “点击”:() => 无效 } 接口 H2 { “点击”:() => 无效 } 类型 A = H1 延伸手...

回答 2 投票 0

实现具有不同泛型类型的参数和返回的接口方法

我有一个这样的界面 公共接口密钥生成器{ T 生成密钥(V 参数); } 我想用这些数据类型来实现这个功能 公开课

回答 1 投票 0

是否可以设置仅用于初始化的显式实现属性?

假设我们有一个类,它必须只有一个无参数构造函数。该类还定义了一个仅限 init 的 setter 属性。 我的班级 { 公共 int MyProp { 得到;在里面; } } 从 C# 9 开始,...

回答 1 投票 0

ASP.NET MVC - 接口类型上的自定义模型绑定器

我不确定这种行为是否符合预期,但当绑定分配给接口类型时,自定义模型绑定似乎不起作用。有人尝试过这个吗? 公开

回答 3 投票 0

react-typescript - 如何允许特定组件类型通过打字稿检查?

我对打字稿相当陌生,尽管在反应(和道具类型)方面有很长的经验。 如果有另一个组件作为道具,我在输入组件时遇到了问题。我已经...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.