草庐IT

explicit-interface

全部标签

java - OutputStream 作为接口(interface)

为什么java.io.OutputStream没有建模为接口(interface)而不是抽象类?我认为接口(interface)可以证明对单元测试等示例很有用。 最佳答案 一些方法已经实现。这对于接口(interface)是不可能的。close()voidflush()voidwrite(byte[]b)voidwrite(byte[]b,intoff,intlen)已使用默认实现实现。 关于java-OutputStream作为接口(interface),我们在StackOverflo

java - 为什么 Eclipse 将接口(interface)方法标记为 public abstract?

当使用Eclipse的“ExtractInterface”重构时,它会默认声明方法publicabstract。为什么?接口(interface)上的public修饰符是完全多余的,abstract在接口(interface)声明上似乎也毫无意义。 最佳答案 这些关键字确实是多余的。我个人不会在这种情况下使用它们,但我明白为什么有人可能更愿意包括它们。JLSexplicitlydiscourages这种做法:Itispermitted,butdiscouragedasamatterofstyle,toredundantlyspeci

java - 在 Scala 中使用重载的 vargs 方法覆盖 Java 接口(interface)

有没有办法在Scala中实现以下Java接口(interface)?publicinterfaceRequest{voidacceptLanguage(Locale...locales);voidacceptLanguage(String...locales);}我试过:overridedefacceptLanguage(locales:Locale*):Unit=overridedefacceptLanguage(locales:String*):Unit=但这给了我:error:doubledefinition:havesametypeaftererasure我试过这个:overr

Java - 接口(interface)/基类引用 - 性能

这是在声明对象时使用接口(interface)/基类引用的一般编码实践:InterfaceIFref=newSomeObject();我知道这提供了松耦合,我们可以更改/编写具有新实现的新类,而不会影响太多代码。这个解释的很精彩herealso.但是我无法理解的一件事是:使用接口(interface)/基类引用是否会影响性能。如果是,那么这是正面影响还是负面影响。 最佳答案 直接使用类可能会更快,绝不会更慢。如果JVM看到一个具体的类,它就会知道“要调用谁”。不一定完全因为可能有子类,除非该类是最终的。甚至可能还有JVM尚未看到的子

java - 带有接口(interface)的枚举 - 一般如何做?

如果我有一组枚举,并且想让它们都实现一个接口(interface),这是通用的正确方法吗?枚举:publicenumMentalSkillimplementsSkillType{ACADEMICS,COMPUTER,CRAFTS,INVESTIGATION,MEDICINE,OCCULT,POLITICS,SCIENCE;privatestaticfinalintUNTRAINED_PENALTY=-3;@OverridepublicSkillTypefromValue(Stringvalue){returnvalueOf(value);}@OverridepublicintgetUn

java - 是否可以创建其成员仅实现多个接口(interface)的类型安全的 Java 集合?

如果我有:interfaceA{voida();}interfaceB{voidb();}我可以有一个像这样的通用方法:classC{voidc(Tt){t.a();t.b();}}但我不能拥有像这样的通用集合:classD{Listl;}我知道我可以创建一个同时扩展A和B的空接口(interface)E,并有一个包含E的列表...但我宁愿让我的类仅标记为A和B,而不必一个E。当有更多的A和B可以以2^n种方式组合时,这就更成问题了。我宁愿能够动态定义一个类型,作为接口(interface)的联合,并让集合将实现所有接口(interface)的对象识别为该类型的实例。有没有办法在Jav

java - 循环泛型 : interface IFoo <T extends IFoo <T>>

这是Java中一个众所周知的习语。参见例如thisSOdiscussion.所以基本上要定义一个接口(interface),实现它的类需要有一个方法来与它们类的对象进行比较,你会这样做:publicinterfaceIComparable>{publicintcompare(Titem);}(注意:这显然是解决特定用例的一种不必要的复杂方法-请参阅thispost-但我正在询问如何解释递归语法,不要介意特定应用程序)。简而言之,这是一个递归定义,递归没有明显的结束,我看不出编译器/类型系统是如何做到这一点的。此外,尝试用文字表达(“IComparable是一个类,其实例可以与实现ICo

java - 接口(interface)类java中的静态工厂方法

我正在阅读Effectivejava教科书。第一项是关于使用静态工厂方法而不是公共(public)构造函数。我的疑问是,如果我指定一个Interface我如何在Interface中指定一个静态工厂方法?因为java不支持interface内部的静态方法。教科书详细说明了如何创建包含公共(public)静态工厂方法的非实例化类。但是那些方法如何访问实现类的私有(private)构造函数呢?教科书说,如果您要定义一个InterfaceType,请创建一个不可实例化的类Types,并在该类中包含静态工厂方法。但是Types类中定义的方法如何访问InterfaceType具体实现的私有(pri

java - 是否可以在 Java 中为具有接口(interface)成员变量的类编写复制构造函数?

如何为具有接口(interface)成员变量的类编写复制构造函数?例如:publicclassHouse{//IAnimalisaninterfaceIAnimalpet;publicHouse(IAnimalpet){this.pet=pet;}//my(non-working)attemptatacopyconstructorpublicHouse(HousehouseIn){//Thefollowinglinedoesn'tworkbecauseIAnimal(aninterface)doesn't//haveacopyconstructorthis.pet=newIAnimal

java - 为什么要将对象分配给接口(interface)?

我多次听说在实例化对象时你应该这样做:“接口(interface)”名称=新的“类”();例如,对于实现List的类链表:Listname=newLinkedList();LinkedList实现了很多接口(interface),包括queue、deque等,上面的代码和有什么区别LinkedListname=newLinkedList();或Queuename=newLinkedList();为什么类型也必须指定两次;这似乎是多余的,但oracledocs似乎没有提到它。 最佳答案 LinkedListname=newLinked