2015-08-18 2 views
0

У меня есть классJava Динамический вызов функции

class JsonMap extends HashMap<String, Object> {} 

Я инициализируется объект как этот

JsonMap jm = new JsonMap(); 

Я вставив в него данные, как этот

jm.put("id", 4); 
jm.put("message", "Hello"); 

, но я хочу сделать что-то легкое, как это, с таким же эффектом.

jm.setId(4); 
jm.setMessage("Hello"); 

Это possibe без необходимости писать методы setId и setMessage в JsonMap классе?

имя функции динамическое: первая часть всегда «установлена», а вторая часть - динамическое значение. это пойдет как ключ внутри HashMap.

Может ли кто-нибудь показать мне, как достичь этого, если это возможно?

+0

я не думаю, что делать что-то вроде «динамические методы» или аналогичные «прототипу» javascript возможны в java. – itwasntme

+1

Мой вопрос: зачем вы это делаете? 'jm.put (" key "," value ")' уже очень просто в письменной форме – itwasntme

+0

U также может немного портиться и сделать что-то вроде этого: http://pastebin.com/MtggQ9Ec, но для меня это просто выглядит хуже стандартного 'jm.put (« ключ »,« val »);' – itwasntme

ответ

0

вам нужно будет написать методы, чтобы сделать это для вас

public void setId(int id) { 
    jm.put("id", id); 
} 

public void setMessage(String message) { 
    jm.put("message", message); 
} 
+2

вся реализация будет зависящей от случая, и ему нужно будет написать метод для каждого ключа, который он хочет включить в объект JSON. – itwasntme

+0

. Я не хочу писать методы внутри моего класса ...... методы являются динамическими ... – syraz37

+0

@ syraz37 Java - это строго типизированный язык, а не язык сценариев. 'jm.setId (4)' требует, чтобы метод 'setId (int)' был определен в классе. – Andreas

0

Java не является строго типизированным языком, а не языком сценариев, поэтому нет, не представляется возможным без необходимости писать методы setId и setMessage в классе JsonMap.

1

Что вы ищете не возможно, так как язык не поддерживает эту функцию, так что по крайней мере вы можете перестать искать встроенную функцию языка. Альтернативные варианты вы можете посмотреть по адресу:

  • профессиональных сериализаторов JSON (как Jackson)
  • JSONtoPOJO преобразователи (многие из них доступны online)
Смежные вопросы