gpt4 book ai didi

Java 语言规范 - 无法理解 'BlockStatement'

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:50 24 4
gpt4 key购买 nike

我一直在研究 Java 语言规范 here (相反,我应该出去喝啤酒)而且我很好奇方法可以包含什么。规范规定一个方法体可以包含一个 block

MethodBody:
Block

其中“ block ”包含“BlockStatements”。 “BlockStatement”规则如下所示:

BlockStatement : 
LocalVariableDeclarationStatement
ClassOrInterfaceDeclaration
[Identifier :] Statement

我可以理解“LocalVariableDeclarationStatement”,它可以是

[final] int x, y, z;

但是,我不明白“ClassOrInterfaceDeclaration”规则存在的原因。这条规则看起来像:

ClassOrInterfaceDeclaration: 
ModifiersOpt (ClassDeclaration | InterfaceDeclaration)

ClassDeclaration:
class Identifier [extends Type] [implements TypeList] ClassBody

InterfaceDeclaration:
interface Identifier [extends TypeList] InterfaceBody

这是怎么回事 - 您肯定不能在 block 中声明类或接口(interface)?有人可以帮助阐明这种困惑吗?

更新:我可以在一个方法中定义一个类,但以下方法不起作用:

public class Foo {
public void doFoo() {
interface dooJa {
int bar();
}
}
}

编译器提示说“成员接口(interface) dooJa 只能在顶级类或接口(interface)中定义”...任何解释?

最佳答案

哦,是的,您可以在方法体内声明一个类。 :-)

class A {

public void doIt() {
class B {}
B b = new B();
System.out.println(b.getClass());
}

}

关于Java 语言规范 - 无法理解 'BlockStatement',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637229/

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