| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Почему не даёт получить class аргумента? |
| Автор: Dims 19.12.2007, 20:33 | ||
| Хочу написать абстрактный класс "Метод", который бы реагировал на определённый тип вызова, класс Call. Сваленные в кучу методы можно было бы просматривать, проверять, какой тип вызова данный метод получает -- и вызывать для него run. Но не даёт.
В первом случае ругается на то, что конструктор типа Class является приватным. Во втором случае ругается на то, что нельзя select from a type variable. Почему это всё запрещено? |
| Автор: nornad 19.12.2007, 21:59 |
| Ну, естественно. Чтобы выдать класс нужен объект этого класса. |
| Автор: Dims 19.12.2007, 22:25 |
Чтобы выдать класс по объекту, нужно воспользоваться методом getClass(). А поле class позволяет выдать класс не объекта, а класса. |
| Автор: Dims 20.12.2007, 17:59 | ||
Ну да. Собственно, первый вариант я показал просто для полноты картины, чтобы было видно, куда я рвусь.
Это неочевидно. Почему так? |
| Автор: serger 21.12.2007, 06:44 | ||||
1. Ну потомучто это что-то типа предпроцессора. 2. Это и сделано для контроля типов в момент компиляции. 3. Ну и почитайте всё-таки "generics". |
| Автор: Dims 21.12.2007, 17:32 |
| Вроде бы читал, но для меня это всё равно не очевидно. Можно поточнее ткнуть меня, где это написано? |
| Автор: LSD 21.12.2007, 18:40 |
То что ты хочешь требует создание нового класса на каждый параметризованный тип. В .NET именно так и происходит, в Java выбрали другой путь. Т.е. генрики всего лишь берут на себя проверку типов во время компиляции, и все. |