草庐IT

Interface1

全部标签

java - 可序列化的标记接口(interface)可以包含默认方法吗?

我认为不能,因为标记接口(interface)原则是没有任何方法,但由于默认方法不是抽象我不确定。 最佳答案 就Java而言,“标记”接口(interface)只是一个常规接口(interface)。因此,它可以像任何(Java-8)接口(interface)一样具有默认方法。现在,至于这是否违反了标记接口(interface)的原则,我不得不说是的。Marker接口(interface)应该充当某种标志,仅标识一个类满足某些外部条件。现在,它可以是一个标记接口(interface)并且具有抽象/默认方法,但它不再纯粹符合定义。来自

java - 100% 抽象类与接口(interface)

是否有理由使用100%抽象类而不是接口(interface)?您能否给我一个何时使用两者的好例子,以便我稍微掌握一下这个概念?更新:100%抽象类->只有抽象方法的抽象类。我很好奇php和java在这方面是否存在差异。更新2:即使我理解大部分原因我对概念比技术原因更感兴趣。 最佳答案 如果“100%抽象类”是指“没有具体方法的抽象类”,那么我可以想到一个原因:可见性。您可以定义要保护的抽象方法,因此它不是类的公共(public)API的一部分。然而,这似乎是一个奇怪的设计。我想到的另一件事是,当您希望向基类添加通用功能时-即,如果它

java - 为什么类编译为 .class 但接口(interface)不编译为 .interface

接口(interface)没有编译成MyInterface.java编译成.interface文件有什么具体原因吗?但是任何类都编译成.class文件。! 最佳答案 因为重点是表明该文件是Java字节代码(并且.class是为此选择的扩展名),而不是特定的语言结构。 关于java-为什么类编译为.class但接口(interface)不编译为.interface,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

java - 单例类如何使用接口(interface)?

我在很多地方读到单例可以使用接口(interface)。有些我无法理解这一点。 最佳答案 每个类都可以实现一个接口(interface),而Singleton只是一个“普通”类,它确保除了它可能实现的其他业务逻辑之外,在任何时间点都只存在一个实例。这也意味着Singleton至少有2个职责,这不是好的OO设计,因为类应该只有1个职责并确保它们擅长该职责,但这是另一个讨论。 关于java-单例类如何使用接口(interface)?,我们在StackOverflow上找到一个类似的问题:

c# - 为什么使用接口(interface)而不是抽象类更可取?

我并不是在问这两者之间的区别,而是为什么更喜欢接口而不是抽象类。 最佳答案 抽象类最明显的“缺点”是继承类型只能从一个抽象类继承。当涉及到接口时,您可以实现多个接口。因此,当您设计您的类型以便它们需要实现多个契约时,接口只是唯一的选择。因此,至少在C世界中,结合SOLID原则,这可以解释对接口的倾向。 关于c#-为什么使用接口(interface)而不是抽象类更可取?,我们在StackOverflow上找到一个类似的问题: https://stackoverf

Java 调试接口(interface)、Lambda 和行号

我在更新调试器以使用Java8时遇到一些问题。例如考虑以下程序:publicclassLam{publicstaticvoidmain(String[]args){java.util.function.Functionsquare=x->{intresult=0;for(inti=0;i正如预期的那样,Java8将lambda编译为如下所示:>javap-c-p-v-s-constantsLamClassfileLam.class...privatestaticjava.lang.Integerlambda$main$0(java.lang.Integer);...Code:stack

java - 抽象类和接口(interface)在 JVM 中的存储方面有什么区别

这个问题在这里已经有了答案:Javainterfaces...Dynamicorstaticmemory?(3个答案)关闭7年前。抽象类和接口(interface)在JVM中的存储方面有什么区别。更准确地说,JVM将接口(interface)存储在其内存中的什么位置?

Java 8 Optional 不能应用于接口(interface)

使用Optional,我想根据映射结果返回某个接口(interface)的某个实现(First或Second)。这是First和Second实现的接口(interface):publicinterfaceMyInterface{Numbernumber();}以下可选用法是错误的:finalStringstring=...//mightbenullfinalNumbernumber=Optional.ofNullable(string).map(string->newFirst()).orElse(newSecond())//erroneousline.number();orElse(

java - 一个类必须遵守一个接口(interface)的文档约定才能说实现该接口(interface)

我知道实现一个接口(interface)意味着什么(技术上),但我不确定我是否理解“契约”包含的内容:假设我创建了一个类MyList,它实现了java.util.List(也就是说,我用编译代码实现了所有方法),是MyList一个List然后呢?或者我是否需要阅读我覆盖的方法的所有评论并确保我的实现满足这些行为的“期望”? 最佳答案 从技术上讲,是的,如果MyList实现了List接口(interface)的所有方法,它就是一个List。但是编译器不是魔术师。它无法检查您的方法是否做了它们应该做的事情。当然,每种方法都应该按照其文档

java - 为实现相同接口(interface)的两个子类定义泛型方法

我正在用Java构建一个“联系人管理器”。我有一个名为“Contact的父类(superclass),它有两个基类:PersonalContact和BusinessContact。我有一个名为Event的接口(interface),它由类Birthday和Meeting实现。(生日包含一个DateTime对象,而session有两个开始时间和结束时间)。PersonalContact拥有一组生日,BusinessContact拥有一组session。现在,在父类(superclass)Contact中,我想创建一个名为“getEventsWithinPeriod()”的抽象方法,它将返