Java 我收到一条错误消息,说静态字段;单元“U型”;应该以静态方式访问

Java 我收到一条错误消息,说静态字段;单元“U型”;应该以静态方式访问,java,apache-poi,Java,Apache Poi,当我将鼠标悬停在getCellData()方法中的“CELL\u TYPE\u****”方法上时,我收到一条错误消息,表示“静态字段“CELL\u TYPE\u***”应以静态方式访问”,并在其上画一条划线 package; 导入java.io.FileInputStream; 导入java.io.FileNotFoundException; 导入java.io.IOException; 导入java.util.concurrent.TimeUnit; 导入org.apache.poi.xss

当我将鼠标悬停在getCellData()方法中的“CELL\u TYPE\u****”方法上时,我收到一条错误消息,表示“静态字段“CELL\u TYPE\u***”应以静态方式访问”,并在其上画一条划线

package;
导入java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.IOException;
导入java.util.concurrent.TimeUnit;
导入org.apache.poi.xssf.usermodel.XSSFCell;
导入org.apache.poi.xssf.usermodel.XSSFRow;
导入org.apache.poi.xssf.usermodel.xssfheet;
导入org.apache.poi.xssf.usermodel.xssf工作簿;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.chrome.ChromeDriver;
导入org.testng.annotations.DataProvider;
导入org.testng.annotations.Test;
公共类seleniumIntg{
XSSF工作簿=空;
XSSFSheet=null;
XSSFRow行=null;
XSSFCell单元=null;
WebDriver=null;
@测试(dataProvider=“getData”)
public void doLogin(字符串用户名、字符串密码)
{
System.setProperty(“webdriver.chrome.driver”,“C://testing/chromedriver_win32/chromedriver.exe”);
驱动程序=新的ChromeDriver();
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
驱动程序。获取(“https://login.yahoo.com/config/login?.src=fpctx&.intl=in&.lang=en-完成&=https://in.yahoo.com/%3fp=us");
findElement(By.xpath(//input[@id='login-username'])).sendKeys(username);
findElement(By.xpath(“//div[@class='mbr-login-submit']/button”)。单击();
findElement(By.xpath(//input[@id='login-passwd'])).sendKeys(密码);
}
@数据提供者
公共对象[][]getData()引发IOException
{
FileInputStream fis=新的FileInputStream(“C://Users/Gaurav/Documents/testid.xlsx”);
工作簿=新XSSF工作簿(fis);
sheet=工作簿.getSheet(“sheet1”);
int rowCount=sheet.getFirstRowNum()+sheet.getLastRowNum()+1;
int colCount=sheet.getRow(0.getLastCellNum();
System.out.println(“行计数为:“+rowCount+”列计数为:“+colCount”);
对象[][]数据=新对象[rowCount-1][colCount];

对于(int rNum=2;rNum,在以下说明中:

else if(Cell.getCellType()==Cell.CELL_TYPE_STRING)
尽管有外观,
Cell
是一个实例,而不是在类中声明此字段时的类:

XSSFCell Cell = null;
但是静态字段和方法不需要以实例作为前缀来调用它们,而是由类来调用

因此,您应该在引用的静态字段前面加前缀,如下所示:

else if(Cell.getCellType()==XSSFCell.CELL_TYPE_STRING)
为了避免这种误导性的代码给人一种印象,即在实际使用类时使用实例作为前缀,请遵循Java代码约定,其中规定变量名应以小写字符开头

这样更好:

XSSFCell cell = null;
...
else if(cell.getCellType() == XSSFCell.CELL_TYPE_STRING)
作为旁注,从POI 3.15 beta 3开始。

建议您在以下说明中使用enum
org.apache.poi.ss.usermodel.CellType.STRING而不是。

else if(Cell.getCellType()==Cell.CELL_TYPE_STRING)
尽管有外观,
Cell
是一个实例,而不是在类中声明此字段时的类:

XSSFCell Cell = null;
但是静态字段和方法不需要以实例作为前缀来调用它们,而是由类来调用

因此,您应该在引用的静态字段前面加前缀,如下所示:

else if(Cell.getCellType()==XSSFCell.CELL_TYPE_STRING)
为了避免这种误导性的代码给人一种印象,即在实际使用类时使用实例作为前缀,请遵循Java代码约定,其中规定变量名应以小写字符开头

这样更好:

XSSFCell cell = null;
...
else if(cell.getCellType() == XSSFCell.CELL_TYPE_STRING)
作为旁注,从POI 3.15 beta 3开始。

建议您使用enum
org.apache.poi.ss.usermodel.CellType.STRING
而不是。

首先,您应该重命名变量,以便它们以小写字母开头(例如,
cell
而不是
cell
),以避免混淆

因此,
cell
是继承自
cell
的类的实例

静态字段(例如)在类中声明
:因此,您应该使用
单元格.单元格类型\u字符串
而不是
单元格.单元格类型\u字符串

首先,您应该重命名变量,使其以小写字母开头(例如
单元格
而不是
单元格
),以避免混淆

因此,
cell
是继承自
cell
的类的实例

静态字段(例如)在类中声明
:因此,您应该使用
Cell.Cell\u-TYPE\u-STRING
而不是
Cell.Cell\u-TYPE\u-STRING

您好,David!非常感谢您的帮助,但我仍然收到相同的错误。“字段Cell\u-TYPE\u-STRING已弃用”。您好,Gaurav。这不是编译错误,而是“仅”一个警告。我刚刚更新了我的答案以解决它。嗨,大卫!非常感谢你的帮助,但我仍然收到相同的错误。“字段单元格类型字符串已弃用”。您好,Gaurav。这不是编译错误,而是“仅”一个警告。我刚刚更新了我的答案以解决它。