2013-05-31 5 views
-6

У меня есть следующий метод:Map <String, String> Ошибка синтаксиса

call(String callName, Map<String, String> callArgs) 

Когда я хочу, чтобы назвать это, я, например:

call("Login", ("KeyString1", "ValueString1"), ("KeyString2", "ValueString2")); 

Но он говорит мне, что: Левая часть задания должна быть переменной

и когда я меняю «KeyString1» и «KeyString2», это говорит мне, что: Ошибка синтаксиса на токене «,», inval id AssignmentOperator

Как это решить?

спасибо.

+10

[рекомендуется для чтения] (http://docs.oracle.com/javase/tutorial/java/index.html) – soulcheck

+0

то, что вы хотите достичь? – stinepike

+3

Вы решите это и многие проблемы, ожидающие вас в ближайшем будущем, изучив основы языка, на котором вы пишете код. –

ответ

6

В Java нет литералов на карте, поэтому то, что вы делаете, даже не анализирует.

Вам необходимо передать два аргумента методу call - a String и Map<String, String>. В настоящее время вы пытаетесь передать три аргумента, два из которых выглядят как кортежи (которые не существуют в Java).

Попробуйте что-нибудь подобное вместо этого:

final Map<String, String> callArgs = new HashMap<String, String>(2); 
callArgs.put("KeyString1", "ValueString1"); 
callArgs.put("KeyString2", "ValueString2"); 

call("Login", callArgs); 

И да - я знаю, что это ужасно многословным. Это Java для вас ...

+0

Спасибо. Я собираюсь узнать о коллекциях. – Copernic

2
call(String callName, Map<String, String> callArgs) 

Средства call метод ожидает String и Map.
("KeyString1", "ValueString1") или ("KeyString2", "ValueString2") - не карта.

Другие упомянули, как использовать карту, но я советую вам прочитать несколько руководств, а не просто копировать ответы.
Это может помочь http://docs.oracle.com/javase/tutorial/collections/

4

Java не поддерживает этот синтаксис. Вы должны определить объект Map отдельно, например. например,

final Map<String, String> callArgs = new HashMap<String, String>() {{ 
    put("KeyString1", "ValueString1"); 
    put("KeyString2", "ValueString2"); 
}} 
call("Login", callArgs); 
+0

Вам не хватает скобки при создании Карты - в противном случае +1 для ближайшего к тому, что хочет OP. – ddmps

+0

Вы ** можете ** сделать это, однако, пожалуйста, не надо! Это может быть строка, но ее очень трудно прочитать. Вы можете написать весь исходный Java-файл на одной строке, если хотите ... – jazzbassrob

+1

Рекомендация этому очевидному начинающему Java - это почти преступление. Мой палец зудит вниз, но я не буду. –

1

Я не совсем уверен, откуда у вас этот синтаксис, потому что это не Java!

В Java карта представлена ​​как Map object, поэтому то, что вы должны передавать, - это ссылка на объект карты, всего один аргумент. Вот пример:

Map<String> myMap = new HashMap<String>(); 
myMap.put("Key1", "Value1"); 
myMap.put("Key2", "Value2"); 
call("Login", myMap); 

В документации к карте дается более подробная информация.

1

У Java не так много магических сил.

Пожалуйста, используйте, как показано ниже:

Map<String> newmap= new HashMap<String>(); 
newmap.put("KeyString1", "ValueString1"); 
newmap.put("KeyString2", "ValueString2"); 
call("Login", newmap); 
Смежные вопросы