【问题标题】:if functional interface came in java version 8 then how @FunctionalInterface annotation working in java version 7 or less如果功能接口出现在 Java 版本 8 中,那么 @FunctionalInterface 注释如何在 Java 版本 7 或更低版本中工作
【发布时间】:2021-11-13 20:34:35
【问题描述】:

@FunctionalInterface interface inter1 { public void show(); } 这个程序在我使用1.6版本编译时可以正常编译运行

【问题讨论】:

    标签: java functional-interface java-annotations


    【解决方案1】:

    在运行时类路径中不可用的注解会被静默抑制;这通常适用于任何注释。

    请注意,您所做的事情是有风险的,并且可能会向您发出有关目标级别和 JDK 不匹配的警告;这正是因为在其他情况下,使用目标上不可用的 JDK 功能会在尝试在运行时加载类时导致错误。你侥幸逃脱只是因为它是一个注解,它始终是可选的。

    【讨论】:

    • 兄弟,正如您所说,注释是可选的....尝试更改@FunctionalInterface 拼写会出错
    • @KuldeepShrivastava 您将“在编译时可用”与“在运行时可用”混淆了。
    • 我的问题是......如果功能接口概念出现在 Java 版本 8 中,那么为什么这个注释“@FunctionalInterface”在 Java 版本 7 或之前的版本中工作它应该为“@FunctionalInterface”抛出错误" 注释.......你收到我的问题了吗
    • 它没有“工作”。你有JDK 8+ 在编译时类路径(这是给你警告),并且类路径上可用的类可以在编译期间使用。
    • 哦,伙计,我明白了.....我将通过在 jdk 版本 7 或更高版本上编译它来测试它......谢谢
    【解决方案2】:

    功能接口是指具有一个非默认方法和一个非静态方法的接口。这个概念一直存在。

    这可以通过实现此接口的类或通过从 Java 8 开始引入的 Lambda 表达式来实现。

    【讨论】:

    • 你错了,功能接口是只包含一个抽象方法但可以有任意数量的默认或静态方法的接口
    • @KuldeepShrivastava 一个非默认和一个非静态指一种抽象方法。这是另一种说法。
    • 我的问题是......如果功能接口概念出现在 Java 版本 8 中,那么为什么这个注释“@FunctionalInterface”在 Java 版本 7 或以前的版本中工作它应该为“@FunctionalInterface”抛出错误" 注释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 2012-10-23
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多