2015-02-09 2 views
0

Скажем, что в абстрактном классе мы имеем следующий метод.Получить и использовать класс из вызывающего объекта

public Object Foo() { 
    [X] someObject; 

    /* some operations*/ 

    return someObject; 
} 

Я хочу, чтобы получить и использовать класс вызывающего объекта из расширенного класса метода. [X] представляют (psuedo code) объект вызывающего класса. Как я могу достичь init someObject с классом объекта, который называется Foo()?

EDIT: Я хочу получить класс, называющий этот метод. И затем используйте этот класс для создания нового объекта. И ответ, который я получил, это то, что это impible без ссылки.

Проще говоря, невозможно ли заменить [X] классом, который называется методом?

+1

Вы используете 'X' как имя типа, но вы говорите, что он представляет объект. Мне непонятно, что вы хотите сделать. –

+0

Простите, что X представляет псевдокод. Вместо X я хотел бы, чтобы класс объекта вызывал метод. –

+1

Если вы говорите, что хотите получить класс, который вызвал этот метод, это не реально, если у вас нет ссылки. – CoderMusgrove

ответ

0

Я не уверен, что это именно то, что вы хотите, но вы можете посмотреть текущую Thread's stack trace. Второй элемент в массиве будет вызывающим. Проблема в том, что class name может быть суперклассом класса, вызывающего вас.

+1

Это был бы совершенно безумный способ создания объектов. – Radiodef

+0

Я не предлагаю, что это хорошая идея. Это просто (частичный) ответ на поставленный вопрос. –

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