2016-02-10 75 views
-1

我想從bar中檢索foo1中的字符串,但getFoo()方法由於某種原因沒有被讀取。這是酒吧課。獲取方法沒有找到

class bar 
{ 
    final String foo1; 
    final String foo2; 
    final String foo3; 
    bar(String foo1, String foo2, String foo3) 
    { 
     this.foo1 = foo1; 
     this.foo2 = foo2; 
     this.foo3 = foo3; 
    } 
    String getFoo1(){ 
     return foo1; 
    } 
    String getFoo2(){ 
     return foo2; 
    } 
    String getFoo3(){ 
     return foo3; 
    } 
} 

這裏是代碼試圖訪問Foo1

Map<String, bar> map = new HashMap<>(); 
map.put("main1", new bar("foo1", "foo2", "foo3")); 
"main1".getFoo1(); 
+0

使用「main1」從地圖上獲取欄,然後調用欄上的getFoo1()。在你的代碼中,你試圖在字符串「main1」上調用getFoo1()。 –

+2

''main1「.getFoo1();'嘗試從字符串」main1「中調用'getFoo1()'。要獲得真正的'bar'對象,請使用'map.get(「main1」)。getFoo1()' – Pphoenix

+0

「main1」 - 是一個String對象。而String沒有getFoo1()方法。 – Ivan

回答

5

兩個問題:第一,包括括號,例如String getFoo1() {不是String getFoo1 {。其次,你不能只是做"main1".getFoo1(),你必須得到"main1"條目:map.get("main1").getFoo1()

2

你缺少的 '()' 從方法名

試試這個:

class bar 
{ 
    final String foo1; 
    final String foo2; 
    final String foo3; 
    bar(String foo1, String foo2, String foo3) 
    { 
     this.foo1 = foo1; 
     this.foo2 = foo2; 
     this.foo3 = foo3; 
    } 
    String getFoo1(){ 
     return foo1; 
    } 
    String getFoo2(){ 
     return foo2; 
    } 
    String getFoo3(){ 
     return foo3; 
    } 
} 

而且,你不能只是做「主」.getFoo1(); 嘗試:

map.get("main1").getFoo1(); 
1

這是不正確

"main1".getFoo1(); 

getFoo1()不是字符串的方法。

我認爲你正在尋找

map.get("main1").getFoo1(); 

這將獲得foo對象地圖,其關鍵是MAIN1的。

1

您正在調用字符串對象「main1」上的getFoo1方法而不是條形對象。我認爲你的意思是使用鍵「main1」從地圖獲取值,然後調用getFoo1。像這樣:map.get(「main1」)。getFoo1();

1

您必須從地圖檢索元素,然後訪問它。上面的代碼只訪問java.lang.String上的方法類

Map<String, bar> map = new HashMap<>(); 
map.put("main1", new bar("foo1", "foo2", "foo3")); 
map.get("main1").getFoo1();