2015-02-23 84 views
0

嘿,我已經定義的類道具作爲通用getter方法

`

class prop{ 
    String name; 
    String address; 
    String city; 
    public void String getValue(String str){ 
     String res=null; 
     if(str.equals("name")) 
     res="john"; 
     if(str.equals("city")) 
      res="london"; 
     return res; 
}` 

我已經定義的getter類這樣的,是否有可能在其他一些定義常規getter方法辦法。

有人告訴我使用枚舉類,但我不明白枚舉在這裏將如何有用。

函數中的參數getValue(String str)是一個String,因爲它被其他類調用。

回答

1

你可以嘗試像這樣:

class Prop{ 
    public enum Properties { 
     Name, 
     Address, 
     City 
    } 

    Map<Properties, String> propertyMap; 

    public Prop() { 
     this.propertyMap = new HashMap<Properties, String>(); 
    } 


    public void String setValue(Properties prop, String value){ 
     this.propertyMap.put(prop, value); 
    } 

    public void String getValue(Properties prop){   
      return this.propertyMap(prop); 
    } 
} 

要添加值:

Prop prop = new Prop(); 
... 
prop.setValue(prop.Properties.Name, "Bob"); 
... 
String name = prop.getValue(prop.Properties.Name); //Should be Bob, assuming it did not change. 

編輯: 根據你查詢,你可以這樣做:

class Prop{ 
    Map<String, String> propertyMap; 

    public Prop() { 
     this.propertyMap = new HashMap<String, String>(); 
    } 


    public void String setValue(String prop, String value){ 
     this.propertyMap.put(prop, value); 
    } 

    public void String getValue(String prop){ 
     return this.propertyMap(prop);  
    } 
} 

問題這種方法是誰在呼喚你的代碼必須猜測或稍微有某種先驗知識的調用你的代碼。通過枚舉,您可以預先提供地圖所具有的屬性。

+0

在getValue()函數中沒有任何方式傳遞參數String? – 2015-02-23 12:33:22

+0

@ user3697669:我已經更新了我的答案。如果你走這條路,我仍然建議你堅持枚舉。 – npinti 2015-02-23 12:43:50

+0

y我也這麼認爲:P謝謝@npinti – 2015-02-23 13:17:32

0
class prop { 
    public enum Field { 
     NAME, ADDRESS, CITY 
    } 

    private String name; 
    private String address; 
    private String city; 

    public String getValue(Field field) { 
     switch(field) { 
      case NAME : return name; 
      case ADDRESS : return address; 
      case CITY : return city; 
     } 

     return null; 
    } 
} 

或者什麼。

位處事的一種奇怪的方式...

+0

在功能上的getValue參數是一個字符串,因爲它是被其他類調用。 – 2015-02-23 12:24:16

0

這確實是題外話,我絕不會使用枚舉在這種情況下,但你可以存儲枚舉值:

enum Properties { 
    Name("John"), 
    Address("221B Baker Street"), 
    City("London"); 

    private String value; 

    Properties(String value0){ 
    value = value0; 
    } 
}