在Java中实现多重inheritance我们使用接口。 它是唯一使用接口吗? 如果是的话,Java中接口的主要用途是什么? 为什么我们需要Java中的接口?
受到一个很好的问题(以及一堆很好的答案)的启发。 “对一个接口,而不是一个对象的代码”语句在Python中有什么意义吗? 我正在寻找像原始问题的答案,但与Python的片段和想法。
目前, TypeScript不允许在接口中使用get / set方法(访问器)。 例如: interface I { get name():string; } class C implements I { get name():string { return null; } } 此外,TypeScript不允许在类方法中使用数组函数expression式:例如: class C { private _name:string; get name():string => this._name; } 有没有其他方法可以在接口定义上使用getter和setter?
我有以下实现,给出了一个编译器错误: public enum FusionStat implements MonsterStatBuilderHelper { ATTACK { @Override public MonsterCard.MonsterCardBuilder safeCreateBuilder(final MonsterCard baseMonsterCard, final MonsterCard fusedMonsterCard, final FusionCard fusionCard) { Objects.requireNonNull(baseMonsterCard); Objects.requireNonNull(fusedMonsterCard); Objects.requireNonNull(fusionCard); if (baseMonsterCard.equals(fusedMonsterCard)) { throw new IllegalArgumentException("baseMonsterCard and fusedMonsterCard need to be different"); } return new MonsterCard.MonsterCardBuilder(baseMonsterCard) .attack(baseMonsterCard.getAttack() + (fusionCard.getFusionPower() * fusedMonsterCard.getAttack())); } }, HITPOINTS { @Override public MonsterCard.MonsterCardBuilder safeCreateBuilder(final MonsterCard […]
我有一个从C#调用的第三方C ++ DLL。 这些方法是静态的。 我想抽象出来做一些unit testing,所以我创build了一个接口,其中的静态方法,但现在我的程序错误: 修饰符“静态”对此项无效 MyMethod cannot be accessed with an instance reference; qualify it with a type name instead 我怎样才能实现这个抽象? 我的代码看起来像这样 private IInterfaceWithStaticMethods MyInterface; public MyClass(IInterfaceWithStaticMethods myInterface) { this.MyInterface = myInterface; } public void MyMethod() { MyInterface.StaticMethod(); }
如何通过在C#中reflection来获取接口的所有实现?
Java中是否有类似于Callable接口的接口,它可以接受其调用方法的参数? 像这样: public interface MyCallable<V> { V call(String s) throws Exception; } 我宁愿避免创build一个新的types,如果已经存在的东西,我可以使用。 还是有更好的策略让多个客户端实现并插入一个可调用的例程? 从这里复制http://www.programmingforums.org/thread27905.html
什么是声明一个接口为抽象的点? 接口方法也一样。 有没有指向它? 例如。 public abstract interface Presenter { public abstract void go(final HasWidgets container); }
假设我们有两个class, Tiger和Aeroplane 。 这两种types的共同之处在于速度。 我知道创build一个超类ClassWithSpeed ,然后从它派生子类Aeroplane和Tiger是不合逻辑的。 相反,最好创build一个包含方法speed()的接口,然后在Aeroplane和Tiger实现它。 我明白了。 但是,我们可以做同样的事情,没有接口。 我们可以在Aeroplane定义方法speed() ,在Tiger定义方法speed() 。 唯一的(也许是非常大的)缺陷就是我们无法通过接口引用来“达到” Tiger和Aeroplane的对象。 我是Java和OOP的初学者,如果有人向我解释接口的作用,我将不胜感激。 干杯!
我写了一组通过发布的接口属性相互链接的组件。 他们被注册并安装在一个devise包中。 在Delphi中使用已发布的接口属性并不常见,因此毫不奇怪,似乎并不能很好地工作。 当组件驻留在同一个表单上时它工作正常,但是不同表单上的组件之间的接口属性链接会导致问题。 与另一个表单上组件的对象链接不同,接口链接似乎无法被IDE识别。 我的意思是最好用一个例子来描述,当你在IDE中打开两个窗体,并在它们之间有组件之间的链接,然后尝试切换到窗体视图为文本(Alt + F12)将导致IDE正确地抱怨: Module 'UnitXXX.pas' has open descendents or linked modules. Cannot close. 但是,如果属性是一个接口,那么这不会发生,反而会发生链接被切断(当使用Notification机制来清除引用时,这是最好的情况,否则你会留下一个无效的指针) 另一个问题,可能是由于相同的错误造成的结果是,当您在IDE中打开一个项目时,表单将被重新打开的顺序是未定义的,因此IDE可以尝试打开一个窗体,其中包含组件的接口链接另一种forms,但其他forms尚未重新创build。 所以这有效地导致AV或切断的链接。 早在90年代,当我使用Datasets和Datasources我记得类似的问题与表单之间的链接消失,所以这有些类似。 作为临时替代方法,我添加了重复的发布属性,对于每个接口属性,我添加了另一个声明为TComponent 。 这使delphi意识到forms之间有联系,但至less可以说是一个丑陋的解决方法。 所以我想知道我能做些什么来解决这个问题? 这是一个IDE错误,可能无法直接解决,但也许我可以重写某些东西或以其他方式挂接到stream式机制,以更有效地解决此问题。 我从来没有深入到stream式机制,但我怀疑Fixup机制应该处理这个问题。 有一个csFixups所以我希望有一个解决方法是可能的。 编辑:使用D2007 。 更新: 新的更新可重复的例子上传到http://www.filedropper.com/fixupbugproject2 添加了property ComponentReference: TComponent以便于比较和跟踪接口与组件stream。 我把问题缩小到汇编层面,这有点超出我的深度。 在它调用的classes单位过程GlobalFixupReferences中: (GetOrdProp(FInstance, FPropInfo) <> 0) 最终执行: function TInterfacedComponent.GetInterfaceReference: IInterface; begin // uncomment the code bellow to avoid exception […]