2013-04-14 3 views
0

Я пишу программу переводчика, и я застрял в данный момент с этим. Существует карта для Целых и MJObjects:Извлечение значения из объекта на карте

private Map<Integer, MJObject> objectHeap; 

objectHeap = new HashMap<Integer, MJObject>(); 

MJObject класс выглядит следующим образом:

MJObject(SymbolTable symTab, String className) 

создать новый MJObject и хранить его внутри карты с эталонным числом.

public Integer allocClassInstance(String className) 
MJObject object = new MJObject(symTab, className); 
objectHeap.put(nextFree, object); 

Затем из другого метода, используя только ссылки из MJObject, мне нужно, чтобы получить Classname внутри MJObject. Как я могу это сделать? Спасибо за помощь.

ответ

2

Затем из другого метода, используя только ссылку на объект MJObject, мне нужно получить имя класса внутри объекта MJObject. Как я могу это сделать?

Если у вас уже есть MJObject, тогда карта не имеет значения. Предполагая, что MJObject делает имя класса он был построен с доступным каким-то образом, вы просто хотите что-то вроде:

String className = mjObject.getClassName(); 

Если вы на самом деле пытается получить ключ в карте, которая связана с этим MJObject, вы 'd придется перебирать по карте - или потенциально создать вторую карту с обратным отображением (MJObject - Integer).

+0

Главное, что я не знаю, разрешено ли мне создать дополнительный метод для получения className из MJObject. Есть ли другие способы, или я должен просто попробовать это? – Gedas

+0

@Gedas: Я не могу догадаться, что вам разрешено делать для вашего задания, боюсь. Вы * можете * сохранить отдельную карту «MJObject» на «String», но это казалось бы странным делом. –

Смежные вопросы