gpt4 book ai didi

Java 8(预发布)接口(interface)成员变量

转载 作者:太空狗 更新时间:2023-10-29 22:44:20 24 4
gpt4 key购买 nike

Java 8 接口(interface)中的公共(public)成员变量是特性还是实现的副作用/缺陷?

此问题与预发布 Java 8 版本有关 lambda-8-b50-linux-x64-26_jul_2012.tar.gz .

Java 8 以默认方法的形式为接口(interface)引入了新特性。使用 JDK8 lambda 编译器进行的随意测试允许这种形式的接口(interface):

public interface Foo {
public int foo = 0;
int foo() default { return foo; }
}

示例实现类型:

public class FooImpl implements Foo {
public int foo = 1;
}

此代码遵循变量阴影的标准约定:

Foo f = new FooImpl();
System.out.println(f.foo());
System.out.println(f.foo);
System.out.println(new FooImpl().foo);

输出:

0
0
1

文档(JSR 335:Java™ 编程语言版本 0.5.1 的 Lambda 表达式)没有提及成员变量。我倾向于认为编译器过于宽容,但也许我错过了一些东西。

最佳答案

接口(interface)中的公共(public)字段并不是 Java 8 中的新功能。如果您还记得它们是隐式静态和最终的,那么您看到的结果就非常有意义。

关于Java 8(预发布)接口(interface)成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com