草庐IT

INTERFACE

全部标签

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

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

Java:你怎么称呼这种多重继承歧义?

这是一个在Java中使用多接口(interface)继承的示例,但存在一个问题。请注意,我完全知道为什么会出现问题,这不是我要问的重点。问题在于如何命名这种特定的多接口(interface)继承歧义(如果有名称的话)。例如,在C++中,当你使用多重实现继承而无法确定使用哪个重写方法时产生的歧义被称为“菱形继承(钻石问题)”:http://en.wikipedia.org/wiki/Diamond_problem现在再一次,我知道这不是同一个问题:这不是重点。关键是在之前的案例中已经创造了一个名称。我想知道是否存在我将要描述的问题的名称。这是另一种多重继承的示例,其中一个接口(inter

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 - Spring 发现 beans 从版本 4.3 更改为版本 5

我有一个使用注解的大型spring应用程序,在spring4.3.13中运行良好,我希望更新到spring5。我遇到了连接bean的各种故障,这看起来很典型:Unsatisfieddependencyexpressedthroughfield'pcoDAO';nestedexceptionisorg.springframework.beans.factory.NoSuchBeanDefinitionException:Noqualifyingbeanoftype'com.acme.dao.impl.contracts.PotentialChangeOrderDAO'available:

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 - 有没有办法将现有界面变成功能界面?

我使用的界面看起来与此类似:publicinterfaceObjectListener{publicvoidobjectAdded(Objecto);publicvoidobjectRemoved(Objecto);}而我目前正在使用一个匿名类来实现接口(interface),但我并不关心这两种方法中的一种。类似这样的事情:someObject.addListener(newObjectListener(){@OverridepublicvoidobjectAdded(Objecto){doSomething(o);}@OverridepublicvoidobjectRemoved(O