java - 有没有办法使 IF 语句中定义的变量在语句本身之外可见并可用?

标签 java variables

我需要创建一个 HSSFWorkbook 或 XSSFWorkbook 对象,具体取决于我读取的文件扩展名,然后能够继续操作并使用创建的对象进行填充。如何使对象在 IF 语句之外可见,以便我可以“全局”使用它?

我尝试过一种方法,但我们知道一种方法只能返回一种对象类型,而我正在处理 2 种可能的对象类型输出(HSSF/XSSF Workbook)

String excelFilePath = "D://"; //path
String fileName = "BetsTable"; //filename
String extension = "xls"; //extension
String completePath = excelFilePath + fileName + "." + extension; //fullpath

FileInputStream inputStream = new FileInputStream(new 
File(completePath));

if(extension == "xls") { 
    HSSFWorkbook workbook = new HSSFWorkbook(inputStream);                      
}
if(extension == "xlsx") {
    XSSFWorkbook workbook = new XSSFWorkbook(inputStream);                      
}

Sheet firstSheet = workbook.getSheetAt(0); // !!! WORKBOOK IS NOW NOT 
"USABLE"

我什么都不期待,因为我知道在这种情况下范围是如何工作的,但我需要一种方法来实现这个选项

最佳答案

简而言之,不。

但是,您可以在内部范围之外保留一个Sheet,您只需在需要的范围中定义它即可:

Sheet sheet = null;
if(extension == "xls") { 
    HSSFWorkbook workbook = new HSSFWorkbook(inputStream);     
    sheet = workbook.getSheetAt(0);                 
}
if(extension == "xlsx") {
    XSSFWorkbook workbook = new XSSFWorkbook(inputStream);       
    sheet = workbook.getSheetAt(0);               
}

// sheet is accessible from here
doSomething(sheet);

关于java - 有没有办法使 IF 语句中定义的变量在语句本身之外可见并可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57492055/

相关文章:

java - GreenDao 的可移植性和连接性

javascript - SharePoint 2010 Jquery/JSON Rest 多个 OR 语句 - 如何?

c - 在其他函数中传递局部变量值时出错

java - 从 ViewPager Fragment 监听 DialogFragment dismiss 事件

Java区分菜单点击和加速器

java - ArrayList、List 或其他使用 <> 的类型中的 <> 代表什么?

java - Android 如何允许来自特定服务器的特定 SSL 证书

javascript - JavaScript闭包如何工作?

c - 持有空值的变量是否也占用内存中的空间?

php - 如何将 JavaScript 变量传递给 PHP?