Làm cách nào để gọi phương thức main()
của một lớp học trong một lớp khác? Tôi có hai lớp học SaveData
và DynamicTest
. Cả hai lớp đều chứa phương thức main()
. Tôi muốn chạy chương trình chính của mình ở lớp DynamicTest
. Làm thế nào để tôi gọi đúng số SaveData
?Làm cách nào để gọi phương thức main() của một lớp trong một lớp khác?
public class SaveData {
private static final Map<String, Object> myCachedTreeMap = new TreeMap<String, Object>();
public static final List<String> getLines(final String resourceParam, final Charset charset) throws IOException{
System.out.println("Please get: "+resourceParam);
if (myCachedTreeMap.containsKey(resourceParam)) {
// Use the cached file, to prevent an additional read.
System.out.println("Found in memory : "+resourceParam);
}
else {
// Load the file from disk
System.out.println("Not Found in memory : "+resourceParam);
}
return null;
}
public static void main(String[] args) throws IOException {
String target_dir = "C:\\myfiles\\config\\en";
String output = "C:\\myfiles\\config\\en\\output.txt";
File dir = new File(target_dir);
File[] files = dir.listFiles();
if (files == null || files.length < 1) {
System.out.println("File list is empty...");
return;
}
// open the Printwriter
PrintWriter outputStream = new PrintWriter(output);
try {
for (File textFile : files) {
if (textFile.isFile() && textFile.getName().endsWith(".txt")) {
readFromDisk(textFile);
}
}
}
finally {
outputStream.close();
}
String fileNameFromCache = "en_synonyms.txt";
Object Sheet1 = myCachedTreeMap.get(fileNameFromCache);
System.out.println(fileNameFromCache + " : \n" + Sheet1);
}
@SuppressWarnings("resource")
private static void readFromDisk(File textFile) throws FileNotFoundException, IOException {
BufferedReader inputStream;
inputStream = null;
String content = "";
try {
inputStream = new BufferedReader(new FileReader(textFile));
content = readFile(textFile);
System.out.println("Bytes Read = "+content.length());
// Save contents
FileContentsObject Sheet1 = new FileContentsObject(System.currentTimeMillis(),
textFile.lastModified(), content,
textFile.getName(),
getLines(null, null));
// add to map
myCachedTreeMap.put(textFile.getName(), Sheet1);
}
finally {
if (inputStream != null) {
inputStream.close();
}
}
}
private static String readFile(File f) throws FileNotFoundException, IOException, UnsupportedEncodingException {
StringBuilder text = new StringBuilder(1024);
int read, N = 1024 * 1024;
char[] buffer = new char[N];
BufferedReader br = null;
try {
br = new BufferedReader(
new InputStreamReader(
new FileInputStream(f), "UTF8"));
while(true) {
read = br.read(buffer, 0, N);
if (read > 0)
text.append(new String(buffer, 0, read));
if(read < N) {
break;
}
}
}
finally {
if (br != null)
br.close();
}
return text.toString();
}
private static final class FileContentsObject {
private long cachedTime; // currentTime
private long lastModifiedTimestamp;
private String contents;
List<String> lines;
private String fileName;
public FileContentsObject(long cachedTime, long lastModifiedTimestamp,
String contents, String fileName, List<String> lines) {
this.cachedTime = cachedTime;
this.lastModifiedTimestamp = lastModifiedTimestamp;
this.contents = contents;
this.fileName = fileName;
this.lines = lines;
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy HH:mm:ss");
System.out.println("Current Time & Date:" + sdf.format(cachedTime));
System.out.println("Last Modified Time Stamp:"
+ sdf.format(lastModifiedTimestamp));
}
/**
*
* @return The lines from the file
*/
List<String> getLines() {
return this.lines;
}
public String toString() {
return "Sheet1{" + "fileName='" + fileName + '\'' + ", contents='"
+ contents + '\'' + ", lastModifiedTimestamp="
+ lastModifiedTimestamp + ", CurrentTime&Date="
+ cachedTime + '}';
}
}
}
public class DynamicTest {
public static void main(String[] args) {
Charset charset = Charset.forName("UTF-8");
try {
List<String> lines = CacheData.getLines("en_synonyms", charset) ;
if (lines != null) {
System.out.println("Number of Lines: "+lines.size());
for (String line:lines) {
System.out.println("DynamicTest:: "+line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
try {
List<String> lines = CacheData.getLines("en_stopwords", charset) ;
if (lines != null) {
System.out.println("Number of Lines: "+lines.size());
for (String line:lines) {
System.out.println("DynamicTest:: "+line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Nếu bạn không biết làm thế nào để gọi các phương pháp tĩnh, bạn nên đọc một hướng dẫn. – fabian
Bạn có thể làm điều này, nhưng không được khuyến khích. Nếu bạn chỉ gọi phương thức 'main' của SaveData từ DynamicTest, hãy đổi tên chính thành phương thức khác. Tôi cũng thấy bạn đã không sử dụng args và vì vậy bạn nên có một phương pháp mà không có bất kỳ đối số. –