- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我一直在研究 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/
{1 + ''} + 10 // 10 {1 + ''} + '' // 0 为什么会这样? BlockStatements 是否返回 0,为什么? 最佳答案 Do BlockStatements r
我一直在研究 Java 语言规范 here (相反,我应该出去喝啤酒)而且我很好奇方法可以包含什么。规范规定一个方法体可以包含一个 block MethodBody: Block 其中“ bl
我正在执行 codemod/transform 以更改代码中的 if/return 语句。 我有很多if(err) do something,我需要重构那个行为。 我如何为此进行转换? 我有什么: i
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 1年前关闭。 Imp
public class SumLineTester { /** * @param args */ public static void main(String[] args) {
我尝试编写类似“撤消”命令的程序。也许您从 WorldEdit 中了解到这一点。对于保存的 block ,我有一个 ArrayList ,但如果尝试保存宝箱、标志等,则不起作用。当然,我可以添加额外的
我试图向游戏中添加一个每侧都有不同纹理的新 block ,它会抛出一个错误异常加载模型变体。 blockstates/c_furnace.json { "variant": {
我是一名优秀的程序员,十分优秀!