2011-06-02 208 views
0

我正在創建一個允許用戶輸入客戶詳細信息的程序。當他們保存每個客戶記錄時,可以選擇添加其他信息。我無法在我的追加類中獲取保存文件的名稱。我需要文件名,以便將附加信息保存到爲客戶創建的相同文件中。如何將文件名從一個文件傳遞到另一個文件。如何將信息從一個類傳遞到另一個類

File FName = fileChooser.getSelectedFile(); 
     String name = FName.getName(); 

public String getname() { return name; } 

這段代碼在我的客戶類中如何在我的append類中獲取此信息?

+1

這與[JavaScript](http://stackoverflow.com/tags/javascript/info)有什麼關係? – 2011-06-02 12:56:26

回答

1

可能是這樣的:

Customer customer = new Customer(); 
// do some stuff with your customer object, including initiating the File and saving its name to a String field called name 
Append append = new Append(); 
append.foo(customer.getName()); // passes the name of the file to the foo method of class Append 

這是假設你只需要在一個方法的文件名(儘管你可以將它保存到一個字段作爲方法foo()的一部分)。你需要在類Append中實現一個方法foo(String name)

另一種辦法是把它作爲追加的構造方法:

Append append = new Append(customer.getName()); 
append.foo(); 

對於這一點,你需要實現類追加構造Append(String name)

+0

+1 append append = new Append(customer.getName()); append.foo(); – Speck 2011-06-02 13:56:43

0

有幾種方法可以做到這一點,具體取決於你正在嘗試做什麼。

  1. 給追加類Customer類
  2. 的成員變量有附加類的構造函數採取任何會指客戶,如姓名的字符串或客戶對象的參數,因爲這就是Java
0

你的問題並不完全清楚,我,但這裏是你可能會遇到一個問題,根據您的描述:

  • 什麼的getName()應該返回時,網絡的名稱le,還是這個人的名字?如果它應該返回文件名,那麼使用getFileName()來代替 - 它更清晰!

我不明白爲什麼你需要一個Append類。就我個人而言,我會處理附加客戶類中的其他信息。我會做,所以每一個值添加或更改時間,相關信息被保存回到類似於文件:

class Customer { 
    public void setForename(String forename) { 
     this.forename = forename; 
     save(); 
    } 
    public void setSurname(String surname) { 
     this.surname = surname; 
     save(); 
    } 
    public void save() { 
     // clear file 
     // add new content 
     String fileContents = "forename="+forname+"&surname="+surname; 
     // save to file 
    } 

也許我不理解你的需求,雖然正確...

+0

我同意。與客戶相關的附加信息應作爲客戶對象的屬性進行存儲。這可以像字符串一樣簡單,或者像append類一樣複雜(append並不是很具描述性)。 – Heathen 2011-06-02 13:56:42

0

除了DeadPassive將附加信息與客戶對象相關聯的答案之外:

保存客戶數據不屬於客戶類別。持久化數據的邏輯屬於與處理問題域的代碼相關的單獨層。控制器或服務類似乎是放置持久性邏輯的更合適的地方。

相關問題