java中的非法前向引用
嗨,当我试图从excel工作表中提取数据时,文件对象创建中出现非法正向引用错误 如何解决此问题?“非法正向引用”表示您试图在定义变量之前使用该变量 在本例中,您试图在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
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
不是。您仍然无法对未初始化的引用调用静态方法。