jls

    1热度

    1回答

    JLS,第9.6.1节(http://docs.oracle.com/javase/specs/jls/se7/html/jls-9.html#jls-9.6.1)说了以下内容。 “如果在注释类型中声明的方法的返回类型不是下列之一,则这是编译时错误:原始类型,字符串,类,任何参数化类的调用,枚举类型8.9),注释类型或其元素类型是前述类型之一的数组类型(第10节)。“ 什么是“任何参数化类的调用”

    4热度

    2回答

    的java grammar从Java语言规范V7指定以下语法规则构造函数: Primary: ... new Creator ... Creator: NonWildcardTypeArguments CreatedName ClassCreatorRest CreatedName (ClassCreatorRest | ArrayCreato

    1热度

    1回答

    下面的代码应该不会在Windows 7 x86 jdk 7上引发AssertionError(每个JLS example for volatile带有-ea开启)? public class TestVolatile { static volatile int i = 0; static volatile int j = 0; static void one() { i++;

    10热度

    2回答

    为什么JVM规范声明接口必须有super_class的java/lang/Object,即使接口不能扩展java/lang/Object? 我专门指的是JVM规范,它说的§4.1: 对于接口方面,super_class项的值必须始终是有效的索引到constant_pool表。该索引处的constant_pool条目必须是表示类Object的CONSTANT_Class_info结构。 尚未在JLS

    3热度

    1回答

    Java语言规范7(JLS7-17.4.5)定义了一个“正确同步”的程序,如下所示:“当且仅当所有顺序一致的执行都没有数据竞争时,程序才能正确同步”。 JLS7-17.4.5还指出: 如果没有正确的同步,很奇怪,混乱和违反直觉的行为是可能的。 因此,从程序员的角度来看,根据上述定义,有一个工具来确定程序是否“正确同步”将是非常有用的。 有没有这样的工具?我无法通过谷歌搜索找到任何东西。如果没有这样

    34热度

    3回答

    考虑下面的类: class Foo { public volatile int number; public int method1() { int ret = number = 1; return ret; } public int method2() { int ret = number = 2; return

    3热度

    3回答

    通过JLS 8.3.2.3时,我无法理解下面的代码。 class Z { static { i = j + 2; } static int i, j; static { j = 4; } } 的代码导致错误Cannot reference a field before it is defined 但如果我更改代码以 class Z { static { i = 2; } stati

    6热度

    2回答

    从JLS details on protected access: 令C是其中一个受保护的成员被声明的类。访问是 只有内C. 另外的一个子类S的体允许的,并且,当ID表示一个实例字段或实例方法,则: 如果接入是由有资格的名称Q.Id,其中Q是表达式名称,则当且仅当表达式Q的类型 是S或S的子类时允许访问。 如果访问是通过字段访问表达式E.Id,其中E主表达式或方法调用表达式E.Id(...), 其

    16热度

    2回答

    我最近在一次演讲中听到,对volatile进行写操作会触发线程写入的每个变量的内存屏障。这真的是对的吗?从JLS看来,似乎只有相关的变量会被刷新,而不是其他的。有人知道实际上是正确的吗?有人能指出我在JLS的具体位置吗?

    3热度

    1回答

    为什么它失败,出现如下所示的错误?我不确定在JLS的哪个地方去寻找这样的限制。 public class A { static A foo() { return null; } public static void main(String[] args) { A A = A.foo(); } } 错误在编译时 A.java: