|
|
|
Ошибка в generic expression
|
|||
|---|---|---|---|
|
#18+
почему Class<Customer> cl = Customer.class; отрабатывает нормально, а Class<T> cl = T.class; вызывает ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 15:56:09 |
|
||
|
Ошибка в generic expression
|
|||
|---|---|---|---|
|
#18+
потому что Т существует только в исходном коде и на этапе компиляции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 15:59:25 |
|
||
|
Ошибка в generic expression
|
|||
|---|---|---|---|
|
#18+
то есть на этапе компиляции вместо T должен будет подставиться конкретный тип. вот я и не могу понять ведь если T is Customer то после подстановки выражения будут аналогичны по сути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 16:06:36 |
|
||
|
Ошибка в generic expression
|
|||
|---|---|---|---|
|
#18+
llemingто есть на этапе компиляции вместо T должен будет подставиться конкретный тип. Нет, не должен. T может быть любым типом, если не указаны bounded wildcards. Следуя вашей логике там во время компиляции должен подставлятся любой конкретный тип? Или как? llemingвот я и не могу понять ведь если T is Customer то после подстановки выражения будут аналогичны по сути. А если T is SomethingElse? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 16:10:19 |
|
||
|
Ошибка в generic expression
|
|||
|---|---|---|---|
|
#18+
lleming, авторто есть на этапе компиляции вместо T должен будет подставиться конкретный тип. вот я и не могу понять ведь если T is Customer то после подстановки выражения будут аналогичны по сути. На этапе компиляции в вашем случае T будет заменен на Object и будут приведены типы, там где ваш класс используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 16:21:04 |
|
||
|
Ошибка в generic expression
|
|||
|---|---|---|---|
|
#18+
Blazkowiczllemingто есть на этапе компиляции вместо T должен будет подставиться конкретный тип. Нет, не должен. T может быть любым типом, если не указаны bounded wildcards. Следуя вашей логике там во время компиляции должен подставлятся любой конкретный тип? Или как? llemingвот я и не могу понять ведь если T is Customer то после подстановки выражения будут аналогичны по сути. А если T is SomethingElse? Class<T> classT = T.class но T как параметр Class и T в правой части являются одним и тем же типом, они не могут быть разными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 16:27:37 |
|
||
|
Ошибка в generic expression
|
|||
|---|---|---|---|
|
#18+
llemingно T как параметр Class и T в правой части являются одним и тем же типом, они не могут быть разными Я вообще не о том. T может быть любым типом в рантайме. Выражение Customer.class вычисляется в compile-time. Окай. Как по-вашему должен работать вот такой код? Код: java 1. 2. 3. 4. 5. 6. 7. Ну, то есть как вы себе представляете оно вообще могло бы работать учитывая Java Erasure. C# не приплетать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 16:34:07 |
|
||
|
Ошибка в generic expression
|
|||
|---|---|---|---|
|
#18+
Blazkowiczllemingно T как параметр Class и T в правой части являются одним и тем же типом, они не могут быть разными Я вообще не о том. T может быть любым типом в рантайме. Выражение Customer.class вычисляется в compile-time. Окай. Как по-вашему должен работать вот такой код? Код: java 1. 2. 3. 4. 5. 6. 7. Ну, то есть как вы себе представляете оно вообще могло бы работать учитывая Java Erasure. C# не приплетать. так в момент вызова метода getClass() разве в параметры не добавляется невидимо ссылка на class<T>? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 16:49:04 |
|
||
|
Ошибка в generic expression
|
|||
|---|---|---|---|
|
#18+
llemingтак в момент вызова метода getClass() разве в параметры не добавляется невидимо ссылка на class<T>? Нет, не добавляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 16:53:40 |
|
||
|
Ошибка в generic expression
|
|||
|---|---|---|---|
|
#18+
придется оставить как есть передавать ссылку на класс объекта которого тип надо возвращать непостредственно в метод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 16:53:47 |
|
||
|
Ошибка в generic expression
|
|||
|---|---|---|---|
|
#18+
lleming, Вы создали параметризованный класс. С какими бы параметрами вы его ни использовали, он как был один так и останется. И его параметр T в рантайме имеет какой-то один определенный тип. В вашем случае Object. И для разных параметров вернул бы один и тот же класс, поэтому T.class нельзя использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 16:56:51 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38470204&tid=2128172]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 398ms |

| 0 / 0 |
