Tag: 界面

接口应该放在一个单独的包中吗?

我是一个工作在一个相当大的项目,有很多组件和依赖关系的团队的新手。 对于每个组件,都有一个interfaces包,其中放置了该组件的公开接口。 这是一个很好的做法吗? 我惯常的做法是将接口和实现放在同一个包中。

使用Typescript检查接口types

这个问题是TypeScripttypes检查的直接模拟 我需要在运行时找出任何types的variables是否实现了一个接口。 这是我的代码: interface A{ member:string; } var a:any={member:"foobar"}; if(a instanceof A) alert(a.member); 如果您在打字稿中input此代码,则最后一行将被标记为“名称A在当前范围内不存在”的错误。 但事实并非如此,这个名字在目前的范围内确实存在。 我甚至可以将variables声明更改为var a:A={member:"foobar"}; 没有编辑的投诉。 在浏览网页并find其他问题后,我将接口更改为一个类,但是不能使用对象字面值来创build实例。 我想知道如何typesA可以消失,但看看生成的JavaScript解释了这个问题: var a = { member: "foobar" }; if(a instanceof A) { alert(a.member); } 没有将A表示为接口,因此不可能进行运行时types检查。 我明白,JavaScript作为一种dynamic语言没有接口的概念。 有没有什么办法来检查接口? 打字游戏的自动完成显示打字稿甚至提供了一个方法implements 。 我怎样才能使用它?

如何find哪些类在Eclipse中实现特定的接口?

我有一个应用程序作为与许多依赖关系的JAR文件。 出于某种原因,我需要反编译一个库,并用Eclipse打开它。 对于项目中的给定接口,是否有find实现它的类的方法? 可能是这个接口是在其他库中实现的,我还没有反编译。 这种类可以做到这一点吗?

在接口中进行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 complain I2 y = (I2)o3; […]

Javadoc评论是否应该添加到实现?

在界面中添加Javadoc注释并在实现中添加非Javadoc注释是否正确? 自动生成注释时,大多数IDE都会为实现生成非JavaDoc注释。 具体的方法不应该有描述吗?

什么是Ruby中的等价接口?

我们可以像在java中那样暴露Ruby中的接口,并强制Ruby模块或类来实现由接口定义的方法。 一种方法是使用inheritance和method_missing来实现,但有没有其他更合适的方法可用?

返回IList <T>比返回T 或List <T>更糟?

这样的问题的答案: List <T>或IList <T>似乎总是认为返回一个接口比返回一个集合的具体实现更好。 但是我正在为此而苦苦挣扎。 实例化一个接口是不可能的,所以如果你的方法正在返回一个接口,它实际上还是返回一个特定的实现。 我正在通过编写两个小方法来进行一些尝试: public static IList<int> ExposeArrayIList() { return new[] { 1, 2, 3 }; } public static IList<int> ExposeListIList() { return new List<int> { 1, 2, 3 }; } 并在我的testing程序中使用它们: static void Main(string[] args) { IList<int> arrayIList = ExposeArrayIList(); IList<int> listIList = ExposeListIList(); //Will give a runtime error arrayIList.Add(10); //Runs […]

如何检查一个对象是否实现了一个接口?

如何检查一些类是否实现接口? 当有: Character.Gorgon gor = new Character.Gorgon(); 如何检查gor实现了Monster界面? public interface Monster { public int getLevel(); public int level = 1; } public class Character { public static class Gorgon extends Character implements Monster { public int level; @Override public int getLevel() { return level; } public Gorgon() { type = "Gorgon"; } } } 方法getLevel()在Gorgon正确覆盖,所以它可以返回创build的新gor […]

为什么Interfaces中没有静态方法,但静态字段和内部类可以吗?

为什么不能在接口中定义静态方法,这里有几个问题,但是没有一个解决基本的不一致:为什么你可以在一个接口中定义静态字段和静态内部types,而不是静态方法? 静态的内部types可能不是一个公平的比较,因为这只是语法糖产生一个新的类,但为什么字段,而不是方法? 在接口中反对静态方法的一个参数是它打破了JVM使用的虚拟表格parsing策略,但不应该同样适用于静态字段,也就是说,编译器可以内联它吗? 一致性是我所希望的,Java应该在界面中不支持任何forms的静态,或者它应该是一致的,并允许它们。

隐式接口variables的编译器处理是否logging?

不久前,我问了一个关于隐式接口variables的类似问题 。 这个问题的来源是我的代码中的一个错误,因为我没有意识到编译器创build的隐式接口variables的存在。 这个variables在拥有它的过程完成时已经完成。 这反过来造成了一个错误,由于variables的寿命比我预期的更长。 现在,我有一个简单的项目来说明编译器的一些有趣的行为: program ImplicitInterfaceLocals; {$APPTYPE CONSOLE} uses Classes; function Create: IInterface; begin Result := TInterfacedObject.Create; end; procedure StoreToLocal; var I: IInterface; begin I := Create; end; procedure StoreViaPointerToLocal; var I: IInterface; P: ^IInterface; begin P := @I; P^ := Create; end; begin StoreToLocal; StoreViaPointerToLocal; end. StoreToLocal按照您的想象进行编译。 局部variablesI (函数的结果)作为隐含的varparameter passing给Create 。 整理StoreToLocal可以调用IntfClear […]