2009-05-28 4 views

ответ

2

В Java, Дженерики доступны только во время компиляции. Вы не можете определить тип Generic во время выполнения. Это позволило реализовать реализацию дженериков обратно со старыми версиями JVM.

Поскольку дженерики доступны только во время компиляции, если вы знаете тип своего класса, тогда вам не нужно использовать отражение.

+1

Я собирался ответить на что-то подобное, поэтому вместо этого я добавлю: Компилятор Java стирает информацию о типе в обобщениях при компиляции. Поскольку отражение оценивается во время выполнения, вся информация о типе будет уже удалена, что делает ее в основном бессмысленной. – Pesto

+1

Это неправда. См. Http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/TypeLiteral.html – robson

+0

Pesto: он не удаляет стираемый возвращаемый тип метода! –

1

Было бы неразумно делать Method общий на стертый тип возврата. Однако с небольшим усилением было бы много усилий. Характер рефлексии заключается в том, что вы не знаете типы во время компиляции, иначе вы могли бы статически связать.

Я думаю, вы могли бы в некоторых случаях даже добавить новые API, чтобы возвращался общий тип. Информация по-прежнему находится на методе, хотя и не в том экземпляре, который вы передаете ему.

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