我是Java編程新手,我想我已經清楚了什麼是對象以及如何使用它們。你認爲我濫用靜力學嗎?
但是,現在我正在編寫一個程序,我注意到我已經在方法中使用了很多'static'關鍵字,並且我懷疑它是否真的是必須的,邏輯的,還是它是因爲我並沒有在腦海中想到面向對象的概念。
更具體地講,我的程序應該從一個txt文件中讀取,並把每一行中一個ArrayList,這是我的代碼:
public class FileBody {
private static final String SEPARATOR = ";";
private static String headerField1 = "regex";
private static String headerField2 = "origin";
private static String headerField3 = "destination";
private static final String HEADER = headerField1 + SEPARATOR + headerField2
+ SEPARATOR + headerField3 + SEPARATOR;
// Getters & setters
public static String getHeader() {
return HEADER;
}
public static String getHeaderField1() {
return headerField1;
}
public static void setHeaderField1(String headerField1) {
FileBody.headerField1 = headerField1;
}
public static String getHeaderField2() {
return headerField2;
}
public static void setHeaderField2(String headerField2) {
FileBody.headerField2 = headerField2;
}
public static String getHeaderField3() {
return headerField3;
}
public static void setHeaderField3(String headerField3) {
FileBody.headerField3 = headerField3;
}
// End getters & setters
public static File createFileIfNotExists(String path) throws IOException {
File file = new File(path);
if (file.createNewFile());
return file;
}
public static File getFile(String path) throws IOException {
File file = createFileIfNotExists(path);
return file;
}
public static boolean isEmpty(File file) throws Exception {
FileReader fileReader = new FileReader(file);
if (fileReader.read() != -1) {
fileReader.close();
return false;
} else {
fileReader.close();
return true;
}
}
public static void writeHeaderToEmptyFile(File file) throws Exception {
if (isEmpty(file)) {
BufferedWriter bufferedWriter = new BufferedWriter(
new FileWriter(file, false));
bufferedWriter.write(HEADER);
bufferedWriter.close();
} else {
return;
}
}
public static ArrayList<String> getLines(File file) throws Exception {
ArrayList<String> lines = new ArrayList<>();
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
while (bufferedReader.ready()) {
lines.add(bufferedReader.readLine());
}
bufferedReader.close();
return lines;
}
}
你認爲我可以使用對象做得更好?如果答案是肯定的,你能否給我這樣做的指導方針?
非常感謝您的幫助。
你應該問問自己,你應該怎麼用FileBody類來表示多個文件體。 – Eran
確切地說,您只能擁有一個文件實例 –
不要打擾手動關閉資源 - 請嘗試使用資源。它不那麼冗長,也不太容易出錯。 –