我正在尝试创建一个包含 BufferReader 和 BufferWriter 的返回对象。这是我的两个类(class):
测试.java
package FileIO;
import java.io.*;
public class Test{
static String line = null;
public static void Main() {
String fileName = Input.getInput();
Object[] ioObject = new Object[2];
ioObject = OpenFile.openFileName(fileName,"READ");
BufferedReader bufferedReader = ioObject[0];
do{
//line = null;
line = ReadLine.getLine(bufferedReader);
System.out.println(line);
} while (line != null);
}
}
OpenFile.java
package FileIO;
import java.io.*;
public class OpenFile {
static Object[] ioObject = new Object[2];
static BufferedReader bufferedReader = null;
static BufferedWriter bufferedWriter = null;
public static Object[] openFileName(String fileName, String type){
if(type == "READ"){
try{
// FileReader reads text files
FileReader fileReader = new FileReader(fileName);
// Always wrap FileReader in BufferedReader.
bufferedReader = new BufferedReader(fileReader);
ioObject[0] = bufferedReader;
System.out.println("you lucky dog, file " + fileName + " was found");
}catch(FileNotFoundException ex) {
System.out.println("FATAL ERROR: File " + fileName + " not found");
System.out.println(ex);
}
}else if(type == "WRITE"){
}else{
System.out.println("FATAL ERROR: type input can only be READ or WRITE");
System.exit(0);
}
return ioObject;
}
}
我在 test.java 中的这一行收到错误:
BufferedReader bufferedReader = ioObject[0];
不兼容类型的对象无法转换为BufferedReader。我很困惑,因为 ioObject[0] 是一个 BufferedReader。
最佳答案
ioObject
是一个 Object[]
,因此编译器只能确定 ioObject[0]
是一个 Object
(即使您知道您在其中放置了一个BufferedReader
。
您需要将其转换为 BufferedReader
:
BufferedReader bufferedReader = (BufferedReader) ioObject[0];
或者,不使用 Object[]
,而是创建一个强类型类来保存两个引用。
class IoObject {
BufferedReader reader;
BufferedWriter writer;
// Constructor, etc.
}
关于java - 使用元素 BufferedReader 和 BufferedWriter 创建数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51032129/