Questions tagged «interface»

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

8
HashSet和Set有什么区别?
看到像这样的代码片段 Set<Record> instances = new HashSet<Record>(); 我想知道Hashset是否是一种特殊的设置。他们之间有什么区别吗?
81 java  interface  set 

5
返回IList <T>比返回T []或List <T>差吗?
这样的问题的答案:List &lt;T&gt;或IList &lt;T&gt;似乎总是同意,返回接口比返回集合的具体实现更好。但是我为此感到挣扎。实例化接口是不可能的,因此,如果您的方法正在返回接口,则实际上它仍在返回特定的实现。我通过编写2个小方法对此进行了一些试验: public static IList&lt;int&gt; ExposeArrayIList() { return new[] { 1, 2, 3 }; } public static IList&lt;int&gt; ExposeListIList() { return new List&lt;int&gt; { 1, 2, 3 }; } 并在我的测试程序中使用它们: static void Main(string[] args) { IList&lt;int&gt; arrayIList = ExposeArrayIList(); IList&lt;int&gt; listIList = ExposeListIList(); //Will give a runtime error arrayIList.Add(10); …

14
接口应该放在单独的包装中吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 改善这个问题 我是一个刚开始从事大型项目的团队的新手,该项目具有许多组件和依赖项。对于每个组件,都有一个interfaces包装,用于放置该组件的暴露接口。这是一个好习惯吗? 我通常的做法一直是将接口和实现放在同一个程序包中。

2
关键字var后的下划线和接口名称是什么意思?
从http://golang.org/src/pkg/database/sql/driver/types.go中: type ValueConverter interface { // ConvertValue converts a value to a driver Value. ConvertValue(v interface{}) (Value, error) } var Bool boolType type boolType struct{} var _ ValueConverter = boolType{} // line 58 func (boolType) String() string { return "Bool" } func (boolType) ConvertValue(src interface{}) (Value, error) {....} 我知道ValueConverter是接口名称。第58行似乎声明了boolType实现接口ValueConverter,但这是否必要?我删除了58行,代码运行良好。


6
如何编写接口的junit测试?
为接口编写junit测试,以便可以将它们用于具体的实现类的最佳方法是什么? 例如,您具有此接口并实现类: public interface MyInterface { /** Return the given value. */ public boolean myMethod(boolean retVal); } public class MyClass1 implements MyInterface { public boolean myMethod(boolean retVal) { return retVal; } } public class MyClass2 implements MyInterface { public boolean myMethod(boolean retVal) { return retVal; } } 您将如何针对该接口编写测试,以便可以将其用于类? 可能性1: public …

7
设计C#类库时,何时应选择通过接口继承?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我有一个数字Processor类,可以做两种非常不同的事情,但是是从通用代码中调用的(“控制反转”情况)。 我想知道在决定它们是否都应该继承自BaseProcessor或实现IProcessor为接口时,我应该了解哪些设计考虑因素(或者对您来说是对用户有用的认识)。


6
如何实现IComparable接口?
我用类的实例填充数组: BankAccount[] a; . . . a = new BankAccount[] { new BankAccount("George Smith", 500m), new BankAccount("Sid Zimmerman", 300m) }; 填充此数组后,我想按余额金额对其进行排序。为此,我希望能够使用检查每个元素是否可排序IComparable。 我需要使用接口来做到这一点。到目前为止,我有以下代码: public interface IComparable { decimal CompareTo(BankAccount obj); } 但是我不确定这是否是正确的解决方案。有什么建议吗?


14
风格上的差异:IDictionary与Dictionary
我有一个朋友,在使用Java开发了很长一段时间后才开始从事.NET开发,在看了他的一些代码后,我注意到他经常做以下事情: IDictionary&lt;string, MyClass&gt; dictionary = new Dictionary&lt;string, MyClass&gt;(); 他将字典声明为接口而不是类。通常,我会执行以下操作: Dictionary&lt;string, MyClass&gt; dictionary = new Dictionary&lt;string, MyClass&gt;(); 我只会在需要时使用IDictionary接口(例如,将字典传递给接受IDictionary接口的方法)。 我的问题是:他的做事方式有什么好处吗?这是Java的惯例吗?
76 c#  java  .net  interface 

1
MOQ-如何模拟需要转换为另一个接口的接口?
我想做的是为I1构造一个最小起订量-很好...但是,在我测试的使用此模拟程序的方法的过程中,我需要将其强制转换为I2才能访问某些未启用的属性I1 Interface I1 { int AProperty{get;set;}} Interface I2 {int AnotherProperty{get;set;}} 然后我有一些东西 Class O1 : I1 {} 和 Class O2 : O1 , I2 {} 问题是,当我拥有I2实现对象的实例时,可以将其强制转换为I1以便访问通过该接口实现的方法。在代码中这不是问题,一切都能按预期进行。 唯一的问题是在该类上编写单元测试时。 这些接口还公开了一个名为GetNewInstance的方法,该方法返回转换为IGetNewInstance接口的实现对象的初始化实例……我通常可以对此进行模拟并使其自身返回(因此我继续使用模拟对象)。 但是,当您尝试将此类型为I2的返回对象转换为I1时,将返回空引用-这很有意义,因为实现I2的模拟对象不会继承任何继承I1的对象。 问题是如何强制模拟对象同时从两个I1和Id继承?

7
接口中的属性/成员变量?
我想知道有什么方法可以强制实现者类声明对象的句柄/基元,就像它们对方法所做的那样。例如: public interface Rectangle { int height = 0; int width = 0; public int getHeight(); public int getWidth(); public void setHeight(int height); public void setWidth(int width); } public class Tile implements Rectangle{ @Override public int getHeight() { return 0; } @Override public int getWidth() { return 0; } @Override …
76 java  interface 

4
接口中的Java转换
有人可以向我解释一下,编译器在第一次强制转换中不会抱怨,而在第二次强制转换中会抱怨吗? interface I1 { } interface I2 { } class C1 implements I1 { } class C2 implements I2 { } public class Test{ public static void main(){ C1 o1 = new C1(); C2 o2 = new C2(); Integer o3 = new Integer(4); I2 x = (I2)o1; //compiler does not …

10
为什么应该首选Java类的接口?
PMD将报告以下违规行为: ArrayList&lt;Object&gt; list = new ArrayList&lt;Object&gt;(); 违反是“避免使用类似'ArrayList'的实现类型;而是使用接口”。 以下行将纠正违规: List&lt;Object&gt; list = new ArrayList&lt;Object&gt;(); 为什么要用后者List代替ArrayList?

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.