什么叫Java中的前向引用?

Gee*_*eek 16 java

我已经通过 这个关于前向引用的合法性的问题,但不清楚forward referencesJava语言的含义.有人可以借助一个例子来解释吗?

Per*_*ion 14

这特别是编译错误.它的全部都是关于类变量声明的排序.我们将一些代码用于说明目的:

public class ForwardReference {        
   public ForwardReference() {
      super();
   }

   public ForwardReference echoReference() {
      return this;
   }

   public void testLegalForwardReference() {
      // Illustration: Legal
      this.x = 5;
   }

   private int x = 0;

   // Illustration: Illegal
   private ForwardReference b = a.reference();
   private ForwardReference a = new ForwardReference();
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,Java允许你引用一个类变量类方法,即使变量的声明来的方法.这是(合法的)前向引用的示例,对此的支持内置于Java编译器中.

但你不能做的是声明一个类变量'a',它依赖于另一个尚未声明的类变量'b'.依赖类变量声明必须以其依赖项的相反顺序出现.

在切线上,如果您的代码包含非法引用错误,则大多数(如果不是全部)IDE将警告您.

非法的前向引用包含在JLS的8.3.2.3节中.