![]() |
|
||||||||||
|
|
|
|||||
|
Здравствуйте! Есть класс CL1, который ничего не знает, что творится за его пределами. У класса есть метод func1(). В любом другом классе (например CL2) создается экземпляр класса CL1. Этот экземпляр вызывает метод
Так вот как мне в функции func1() узнать кто ее вызвал? То есть как получить ссылку на cl1Instance? Заранее благодарен.
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
cl1Instance есть экзепляр от CL1. Следовательно - this внутри func1()
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Вот это я...! Ничего, торможение - тоже движение. Спасибо. А вопрос создавался с целью узнать из какого класса был вызван метод. Так вот как узнать кому принадлежит экземпляр cl1Instance? То есть в каком классе был создан cl1Instance?
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 27.12.2011 в 22:38. |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Вот это вряд ли. Только в дебаг плеере можно узнать стек вызовов через (new Error("")).getStackTrace();
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Спасибо. Вся эта каша связана с тем что есть гет/сет свойство. Но одни классы могут вызывать сеттер, а другие не должны. Вот и подумал поставить проверку в сеттере из какого класса он был вызван, и соответственно запрещать или разрешать изменение переменных. Создавать и использовать интерфейсы определяющие гет или сет для определенных экземпляров не хочу. Вернее в моем случае - это будет слишком запутанно.
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 27.12.2011 в 22:39. |
|
|||||
|
Я обычно (и судя по этому форуму еще не один разарботчик) забивают и просто держат в голове ряд прявил, кому можно менять, кому нельзя. Проблем не создавало.
В библиотеках можно модификатор internal использовать, но штука очень ограниченная. Может неймспесы? - не знаю, не пробовал. Вообще это как синглтонами(не к ночи будь помятуты) - народ мучается, проверят, не создан ли экземпляр второй раз, выбрасывает исключение. А результат? Я за всю жизнь словил это исключение только 2 раза. Просто потому что человек смотрит: "Ага, сервис, ага, он должен быть где-то инициализирован данными, как же его инициализировать или как протянуть инициализированный, оо, да это синглтон" И да, интерфейсы обычно выглядят в этом случае как "оверхед". Последний раз редактировалось expl; 27.12.2011 в 22:51. |
|
|||||
|
Ну, в моем случае нужен public. Так как доступ должен осуществлятся из других пакетов. Но и если бы это было не так, компилятор не позволит поставить разные модификаторы на гет и сет.
Можно и держать в памяти, но я люблю писать код, будучи уверенным, что непредвиденных обстоятельств не должно случится. Звучит очень громко . По крайней мере стремлюсь к тому чтобы такое не случилось. Ведь после 1000 строк - эта штука вылетает из головы, и нечаянно можно изменить то что изменяться не должно. Ведь согласитесь, бывают же очень большие запутанные проэкты. А потом пол дня поиска зарытой собаки...По поводу синглтонов - согласен. Лично мне и в голову бы не пришло написать new MySingletone(); потому что знаю что он синглтон. И при обращении MySingletone.instance - знаю что если экземпляра нет - он создастся, если сть - не создастся. Добавлено через 1 минуту А вот про пространства имен надо бы почитать. Никогда не представлял что это такое. Ладно, раз помогут - почитаю... Спасибо всем за внимание.
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 27.12.2011 в 23:09. |
|
|||||
|
Сделайте два интерфейса, один с геттером, другой с сеттером (ну или с обоими) и где необходимо используйте интерфейсы.
Добавлено через 3 минуты Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
А что делать, если мой класс CL1 унаследован от DisplayObject?
Выдает что нельзя преобразовать ICL1 в DisplayObject. А вот такая конструкция работает:
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 28.12.2011 в 00:23. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|