草庐IT

explicit-interface

全部标签

java - java从哪里得到接口(interface)的想法?

我知道现代编程语言中的大多数内容至少部分基于早期语言的特性。这让我想知道java从哪里获得接口(interface)的灵感。主要是他们自己创造的吗?它是否完全基于抽象基类(具有多重继承)? 最佳答案 在我最近阅读的一本Objective-C书中在Mac上学习Objective-C,作者建议Java接口(interface)的主要灵感来自Objective-C对FormalProtocols的实现。.Obj-C中的正式协议(protocol)是文件,就像Java的接口(interface)一样,它们充满了抽象方法——或者简单地说只是方

java - 为什么方法 String.indexOf 不是接口(interface) CharSequence 的一部分?

我看不出制作String.indexOf有任何缺点部分界面CharSequence.好处是其他类(如StringBuffer或StringBuilder)也需要实现indexOf方法。那么indexOf应该只是String的一部分有什么设计上的原因吗?谢谢。 最佳答案 我不确定这是什么原因,但我可以举一个实现CharSequence的类的示例。它是java.nio.CharBuffer。理论上可以通过循环调用charAt()来实现indexOf()。但它不会像用户期望的那样工作。我们无法区分两种情况:性格还没有和性格不存在也不会存在

java - 在 Jar 中查找实现接口(interface)的类

我想查找jar中的类是否实现了特定的接口(interface)。我已经实现了下面的代码,但是它遍历了jar文件中的所有类,并在每个类上查找它是否实现了这个特定的接口(interface)。publicstaticsynchronizedbooleanfindClassesInJar(finalClassbaseInterface,finalStringjarName){finalListclassesTobeReturned=newArrayList();if(!StringUtils.isBlank(jarName)){//jarNameisrelativelocationofjar

Java 8 : When the use of Interface static methods becomes a bad practice?

从Java8开始,我们可以在接口(interface)中使用默认方法和静态方法。常量接口(interface)模式是对接口(interface)的不良使用,称为常量接口(interface)反模式。>EffectiveJava,第17项:Theconstantinterfacepatternisapooruseofinterfaces.Thataclassusessomeconstantsinternallyisanimplementationdetail.Implementingaconstantinterfacecausesthisimplementationdetailtolea

java - 迭代器接口(interface)

我有一个大学作业,要求我实现一个实现Iterator接口(interface)的内部类。迭代器在单链表父类(superclass)上工作。目前我的内部类是这样的:privateclassListIteratorimplementsIterator{Nodetemp;booleannextCalled=false;ListIterator(Nodefo){this.temp=fo;}@OverridepublicbooleanhasNext(){if(temp!=null){returntrue;}returnfalse;}@OverridepublicVnext(){nextCalle

java - 为什么为继承而设计的类应该很少实现 Serializble 接口(interface)?

根据EffectiveJava:ClassesdesignedforinheritanceshouldrarelyimplementSerializable,andinterfacesshouldrarelyextendit.这种说法背后的原因是什么?换句话说,如果他们实现Serializable接口(interface)会出现什么问题? 最佳答案 同一项的下一句是这样说的:Classesdesignedforinheritance(Item17)shouldrarelyimplementSerializable,andinterf

java - 将类转换为不相关的接口(interface)

显然,这会导致编译错误,因为Chair与Cat无关:classChair{}classCat{}classTest{publicstaticvoidmain(String[]args){Chairchair=newChar();Catcat=newCat();chair=(Chair)cat;//compileerror}}为什么当我将Cat引用转换为不相关的接口(interface)Furniture时,我只会在运行时出现异常,而编译器显然可以告诉Cat没有实现Furniture?interfaceFurniture{}classTest{publicstaticvoidmain(S

java - 如何在Java中获取接口(interface)或抽象类方法的注解

我有一个这样的界面:publicinterfaceIFoo{@AnnotationTest(param="test")Stringinvoke();}我是这样实现的:publicclassFooimplementsIFoo{@OverridepublicStringinvoke(){Methodmethod=newObject(){}.getClass().getEnclosingMethod();AnnotationTestann=method.getAnnotation(AnnotationTest.class);if(ann==null){System.out.printl("P

java - 从 Kotlin 实现 Java 接口(interface)时出现 NullPointerException

我正在尝试在Kotlin中从RxJava实现BiFunction接口(interface),但我得到了一个NullPointerException。这是我在Kotlin中实现的Java接口(interface)。它来自RxJava2。packageio.reactivex.functions;importio.reactivex.annotations.NonNull;/***Afunctionalinterface(callback)thatcomputesavaluebasedonmultipleinputvalues.*@paramthefirstvaluetype*@param

Java:接口(interface)可以包含其中定义的常量变量吗?

我可以在接口(interface)中创建publicstaticfinal变量吗?我可以在这些文件中保留一些常用的常量值吗? 最佳答案 是的,你可以:publicinterfaceConstants{publicstaticfinalintZERO=0;}但是,现在一般认为这不是一个好主意。如果接口(interface)也有真正的目的并没有那么糟糕,并且常量很可能被大多数实现使用...但是引入一个接口(interface)只是使获取常量变得更容易实际上是对接口(interface)目的的滥用。(这就是过去经常发生的事情。)