Сашка Брамс: Ну вот самое простое, не углубляясь в промышленную разработку, поддержку и развитие кодовой базы и тд. На "вашем уровне", так сказать.
Вот есть у вас мапа. Лежит в ней "что-то". Что именно, вы не знаете. Достали вы оттуда некий объект. Что вы с ним будете делать ? Печатать? Умножать? Делить ? Вызывать у него какие-то методы ? Проблема в том, что узнать что именно там за объект вы достали можно например через InstanceOf, но это во-первых тоже обычно дурной стиль, а во-вторых все варианты вы не охватите. Я бы советовал какую-нибудь хорошую книгу почитать, того же Эккеля, особенно главы про полиморфизм, ООП и тд. Постепенно все встанет на свои места.
Сашка Брамс: Дополню, иногда даже через InstanceOf и Reflection можно не получить имя класса, который зарыт в Object. Как пример, у вас там лежит какой-нибудь proxy-class.
Собственно, создание этого самого proxy класса часто и спасает от хранения "чего угодно". Другими словами, сделайте свой proxy для своих объектов и его-то и храните в своем хеше.
class MyProxy {
....
public bool isMyString() {....}
public bool isMyInt() {....}
public bool isMyObj() {....}
....
public String getMyString() {....}
public Integer getMyInt() {....}
public MyObj getMyObj() {....}
....
}
HashMap m = new HashMap<Sring, MyProxy>();