2012-02-26 71 views
1

背景:未找到變量。引用另一個類的對象

我正在併發服務器上創建一個基本的下載中心。

我下一個主要的方法創建在Server class文件對象

File[] files = { 
    new File("1. Program", "myProgram.jar"), 
    new File("2. Image", "myPicture.jpg"), 
    new File("3. Book", "myBook.txt")}; 

此引用到File class,我創建的構造函數和getter。

class File { 

    private String option; 
    private String fileName; 


    public File(String option, String fileName) { 
     this.option = option; 
     this.fileName= fileName; 
    } 

    public String getOption() { 
     return option; 
    } 


    public String getFileName() { 
     return fileName; 
    } 

    public void getFileOptions(File[] files) { 
     for (File f : files) { 
      System.out.printf("The option is %s\n", f.getOption()); 
     } 
    } 
} 

我試圖從我的ServerState class調用getFileOptions方法。

theOutput= File.getFileOptions(files); 

輸出是返回給客戶端的字符串。

我的IDE說(files)無法找到。任何想法,我要去錯了嗎?凸輪我不把結果返回到最初沒有創建對象的類中?

+0

我不明白這個問題。你是否想引用來自不同類的'文件'?因爲如果它沒有被聲明爲靜態的,你就無法做到這一點。 – Jivings 2012-02-26 21:02:12

+0

比這更糟,Jivings。如果這是問題,他會想知道爲什麼'Server.files'失敗。某種程度上,這是令人印象深刻的。 – 2012-02-26 21:04:53

+0

顯示您將呼叫置於'getFileOptions'的位置。對於初學者來說,如果這是在你的'ServerState'類,你需要用'File'的實例調用'getFileOptions',或'getFileOptions'需要是靜態的。 – 2012-02-26 21:12:54

回答

1

行,所以我提出File對象到ServerState class並通過調用從File class也含有該對象的構造函數,getter和setter方法toString()方法訪問使用String theOutput = files[0].toString() + files[1].toString() + files[2].toString();的選項。

-2

您在一個類的一個方法中定義的files與您試圖在另一個類的另一個方法中引用的files完全無關。否則,你不覺得你的使用會與另一個程序員之前在SDK中使用該變量的某個地方發生衝突嗎?或者你已經被告知只能使用像myNameThisClassFiles這樣的'安全'名字?

反正a tutorial

+0

文盲:被其他答案糾正的問題只是OP的問題之一,而且比我在這裏糾正的問題要少得多 - 這也是明確提出的問題。但是如果你們中的另一個人低估了這個答案,我可以洗手的OP並獲得一個徽章。 – 2012-02-27 08:14:50

1

好了,你在這裏提到的3類

服務器(主)類,它有一個文件變量,它是File對象的數組。

文件,該文件是你的對象類。

而且ServerState類,這是,你正在嘗試做的:

theOutput= File.getFileOptions(files); 

是否正確?

不能在服務器中創建類的對象,除非你傳遞一個參考吧什麼的,在這種情況下,我們需要更多的情況下在你的榜樣,以幫助您使用它在ServerState類。閱讀上面發佈的示波器教程可能是一個好主意。

+0

是的,這是正確的。將有一個閱讀 – keenProgrammer 2012-02-26 21:41:25

相關問題