static Customer GetCustomer(int id)
此方法的返回類型並不意味着你必須返回Customer
類是可見的。
這意味着它應該返回對Customer類或Customer類的一個子類的對象的引用。
所以,你的回報的說法應該是這樣的: -
return new Customer(id);
,並根據該法,現在看來似乎應該與id
返回一個已經存在的Customer
對象。例如,如果您有List<Customer>
,那麼您需要從該列表中找出具有給定id
的對象Customer
。
現在,鑑於您的主要方法,您已經創建了兩個Customers
- forrest
和random
。您需要將這些引用保存在某個持久性存儲中,可以是List<Customer>
或某些數據庫。並且要獲取指向基於某個id
的對象的引用,您必須從正在使用的持久性存儲中獲取它。
在你的情況,因爲你希望獲取基於id
對象,你可以保持Map<Integer, Customer>
您Customers
存儲與他們的特定id
。
static Map<Integer, Customer> map = new HashMap<Integer, Customer>();
public static void main(String[] args) {
Customer forrest = new Customer("Forrest Stallings", 1, "42 New Street, New York, NY");
Customer random = new Customer("Random Name", 2, "44 New Street, New York, NY");
map.put(1, forrest);
map.put(2, random);
}
,然後在getCustomer
方法,剛拿到customer
爲id
作爲參數傳遞: -
public Customer getCustomer(int id) {
return map.get(id);
}
所以,你不需要任何價值上做id
測試。它會自動獲取相應的Customer
那id
。
例如,: -
getCustomer(1);
將返回forrest
指向的對象的引用。
你節省客戶在數據庫中?否則,客戶forrest和隨機只存在於主要方法的範圍內。 –
@RoddyoftheFrozenPeas嗯......現在我只是手動添加客戶(在這種情況下只有2個客戶),稍後我可能會嘗試編寫客戶輸入界面...我想要一個通用的方法,假設idk第一個客戶的實例名稱是'Forrest',我如何讓程序返回Forrest int ID爲1? – user133466
你混淆了類名和變量名。在Java中,標準化做法是大寫類名但不包含變量名。 「Forrest」和「Random」不應該大寫。所以這是令人困惑的,因爲你正在返回'Customer',這似乎是一個類本身。實際上,我想你想要返回'福雷斯特'。但是按照大寫標準,這個錯誤會更好。 –