powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка в generic expression
11 сообщений из 11, страница 1 из 1
Ошибка в generic expression
    #38470084
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему

Class<Customer> cl = Customer.class;

отрабатывает нормально, а

Class<T> cl = T.class;

вызывает ошибку
...
Рейтинг: 0 / 0
Ошибка в generic expression
    #38470094
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что Т существует только в исходном коде и на этапе компиляции
...
Рейтинг: 0 / 0
Ошибка в generic expression
    #38470106
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть на этапе компиляции вместо T должен будет подставиться конкретный тип.

вот я и не могу понять ведь если T is Customer то после подстановки выражения будут аналогичны по сути.
...
Рейтинг: 0 / 0
Ошибка в generic expression
    #38470112
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingто есть на этапе компиляции вместо T должен будет подставиться конкретный тип.
Нет, не должен. T может быть любым типом, если не указаны bounded wildcards. Следуя вашей логике там во время компиляции должен подставлятся любой конкретный тип? Или как?

llemingвот я и не могу понять ведь если T is Customer то после подстановки выражения будут аналогичны по сути.
А если T is SomethingElse?
...
Рейтинг: 0 / 0
Ошибка в generic expression
    #38470137
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
авторто есть на этапе компиляции вместо T должен будет подставиться конкретный тип.

вот я и не могу понять ведь если T is Customer то после подстановки выражения будут аналогичны по сути.
На этапе компиляции в вашем случае T будет заменен на Object и будут приведены типы, там где ваш класс используется.
...
Рейтинг: 0 / 0
Ошибка в generic expression
    #38470149
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczllemingто есть на этапе компиляции вместо T должен будет подставиться конкретный тип.
Нет, не должен. T может быть любым типом, если не указаны bounded wildcards. Следуя вашей логике там во время компиляции должен подставлятся любой конкретный тип? Или как?

llemingвот я и не могу понять ведь если T is Customer то после подстановки выражения будут аналогичны по сути.
А если T is SomethingElse?

Class<T> classT = T.class

но T как параметр Class и T в правой части являются одним и тем же типом, они не могут быть разными
...
Рейтинг: 0 / 0
Ошибка в generic expression
    #38470161
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingно T как параметр Class и T в правой части являются одним и тем же типом, они не могут быть разными
Я вообще не о том. T может быть любым типом в рантайме.
Выражение Customer.class вычисляется в compile-time.
Окай. Как по-вашему должен работать вот такой код?

Код: java
1.
2.
3.
4.
5.
6.
7.
Class<Customer> cc = getClazz();
Class<Person> cp = getClazz();

public <T> Class<T> getClazz(){
    Class<T> c = T.class;
    return c;
}



Ну, то есть как вы себе представляете оно вообще могло бы работать учитывая Java Erasure.
C# не приплетать.
...
Рейтинг: 0 / 0
Ошибка в generic expression
    #38470194
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczllemingно T как параметр Class и T в правой части являются одним и тем же типом, они не могут быть разными
Я вообще не о том. T может быть любым типом в рантайме.
Выражение Customer.class вычисляется в compile-time.
Окай. Как по-вашему должен работать вот такой код?

Код: java
1.
2.
3.
4.
5.
6.
7.
Class<Customer> cc = getClazz();
Class<Person> cp = getClazz();

public <T> Class<T> getClazz(){
    Class<T> c = T.class;
    return c;
}



Ну, то есть как вы себе представляете оно вообще могло бы работать учитывая Java Erasure.
C# не приплетать.

так в момент вызова метода getClass() разве в параметры не добавляется невидимо ссылка на class<T>?
...
Рейтинг: 0 / 0
Ошибка в generic expression
    #38470204
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingтак в момент вызова метода getClass() разве в параметры не добавляется невидимо ссылка на class<T>?
Нет, не добавляется.
...
Рейтинг: 0 / 0
Ошибка в generic expression
    #38470205
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
придется оставить как есть передавать ссылку на класс объекта которого тип надо возвращать непостредственно в метод
...
Рейтинг: 0 / 0
Ошибка в generic expression
    #38470208
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
Вы создали параметризованный класс. С какими бы параметрами вы его ни использовали, он как был один так и останется. И его параметр T в рантайме имеет какой-то один определенный тип. В вашем случае Object. И для разных параметров вернул бы один и тот же класс, поэтому T.class нельзя использовать.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка в generic expression
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]