java中的非法前向引用

java中的非法前向引用,java,Java,嗨,当我试图从excel工作表中提取数据时,文件对象创建中出现非法正向引用错误 如何解决此问题?“非法正向引用”表示您试图在定义变量之前使用该变量 在本例中,您试图在wb的声明中调用wb上的方法 import java.io.*; import jxl.*; class Xlparsing { Workbook wb =wb.getWorkbook(new File( "C:\\Documents and Settings\\kmoorthi\\Desktop\\ak\\n

嗨,当我试图从excel工作表中提取数据时,文件对象创建中出现非法正向引用错误

如何解决此问题?

“非法正向引用”表示您试图在定义变量之前使用该变量

在本例中,您试图在
wb
的声明中调用
wb
上的方法

 import java.io.*;
 import jxl.*;
 class Xlparsing
 {
   Workbook wb =wb.getWorkbook(new File(
    "C:\\Documents and Settings\\kmoorthi\\Desktop\\ak\\new.xls"));
   // Illegal forward reference What it means
   Sheet st = wb.getSheet(0);
   Cell cell1 = st.getCell(0,0);
   String a1 = cell1.getContents();
   public static void main(String s[])
   {
     System.out.println(new Xlparsing().a1);
   }
 }

尽管getWorkbook是静态的,所以相应地,这段代码应该可以工作。但在这里,在声明之前使用引用或在声明的同一语句中使用引用会导致错误“前向引用,即在声明之前使用引用”。

前向非法引用是一个术语,当未初始化的非全局变量值分配给全局变量时,该术语就会出现


在您的例子中,工作簿wb=wb.getWorkbook(新文件(“---”)-
wb
在调用
getWorkbook()
方法之前未初始化。为了避免FIR,您应该初始化
wb

,我想这样做的目的是“静态地”调用
getWorkbook()
方法,正如您应该做的那样。因此,您应该将
wb
成员初始化更改为:

 import java.io.*;
 import jxl.*;
 class Xlparsing
 {
   Workbook wb =wb.getWorkbook(new File(
    "C:\\Documents and Settings\\kmoorthi\\Desktop\\ak\\new.xls"));
   // Illegal forward reference What it means
   Sheet st = wb.getSheet(0);
   Cell cell1 = st.getCell(0,0);
   String a1 = cell1.getContents();
   public static void main(String s[])
   {
     System.out.println(new Xlparsing().a1);
   }
 }
Workbook wb = wb.getWorkbook(...);

如果代码中的注释是问题,您什么时候得到它?从哪里来?作为例外?在用户面前抛出非法的前向引用肯定不是javac的概念。如果它是一个例外,它可能与我们无法访问的XLS文件非常相关。当我试图编译显示编译器错误的编码解码器时,这个错误出现了。在做了埃里克森提到的修正之后,考虑把代码放在构造函数中。这能回答您的问题吗?看起来getWorkbook在API中是静态的,所以:工作簿wb=Workbook.getWorkbook(…);我在谷歌上搜索了一下,试图找出他使用的API,但没有找到完全匹配的API。JExcelAPI:
Getworkbook
可能是静态的,但
wb
不是。您仍然无法对未初始化的引用调用静态方法。