2016-02-10 2 views
-1

Я пытаюсь получить строку в 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() на панели. В коде вы пытаетесь вызвать getFoo1() в строке «main1». –

+2

'' main1 ".getFoo1();' пытается вызвать 'getFoo1()' из строки "main1". Чтобы получить реальный объект '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; 
    } 
} 

Кроме того, вы не можете просто «main» .getFoo1(); Try:

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

это неправильно

"main1".getFoo1(); 

, как getFoo1() не является методом строки.

Я думаю, что вы ищете

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

это получит foo объект из карты, чей ключ main1.

1

Вы вызываете метод getFoo1 для строкового объекта «main1», а не для объекта bar. Я думаю, что вы хотели сделать, это получить значение с карты, используя ключ «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(); 
Смежные вопросы