Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / женерики + getClass() / 8 сообщений из 8, страница 1 из 1
18.01.2012, 17:41:15
    #37620723
Synchrophasotron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
женерики + getClass()
всем доброго времени суток.
у меня есть такой код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
final public class PaginationData<T extends DtoObject> extends GridPaginationData {
....
    private T dto;
...

    public void setParameters(Query query) {
        Class<? extends DtoObject> clazz = dto.getClass();
        
....
        try {
            BeanInfo returnsInfo = Introspector.getBeanInfo(clazz);
            PropertyDescriptor[] propertyDescriptors = returnsInfo.getPropertyDescriptors();
.... 
}
}


я не до конца понимаю почему этот код корректно работает.
Код: java
1.
dto.getClass()


Ведь все женерики компилятся в простые обжекты во время компиляции, поэтому мы не можем получить T.class
...
Рейтинг: 0 / 0
18.01.2012, 17:43:08
    #37620726
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
женерики + getClass()
Что напечатает этот код.
Код: java
1.
2.
Object o = new String("");
System.out.print(o.getClass());


А почему? Ведь переменная объявлена как Object?
...
Рейтинг: 0 / 0
18.01.2012, 17:44:39
    #37620729
Synchrophasotron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
женерики + getClass()
Blazkowicz,

:) понял спасибо. Действительно это был глупый вопрос)) А ответ умный
...
Рейтинг: 0 / 0
18.01.2012, 17:51:34
    #37620744
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
женерики + getClass()
У меня другой вопрос к этому коду. Откуда уверенность что dto всегда не null?
...
Рейтинг: 0 / 0
19.01.2012, 00:57:09
    #37621219
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
женерики + getClass()
Blazkowicz,

Там скорее всего в конструкторе он инициализируется, типа:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...
        ParameterizedType genericSuperclass = (ParameterizedType) getClass()
                .getGenericSuperclass();
        try {
            dto= ((Class<T>) genericSuperclass
                .getActualTypeArguments()[0]).newInstance();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
....    
...
Рейтинг: 0 / 0
19.01.2012, 11:53:49
    #37621708
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
женерики + getClass()
Большой Синий КитТам скорее всего в конструкторе он инициализируется, типа:

Такой код работает только для случая
Код: java
1.
public class StudentPaginationData extends PaginationData<StudentDto>
...
Рейтинг: 0 / 0
19.01.2012, 12:32:03
    #37621828
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
женерики + getClass()
BlazkowiczБольшой Синий КитТам скорее всего в конструкторе он инициализируется, типа:

Такой код работает только для случая
Код: java
1.
public class StudentPaginationData extends PaginationData<StudentDto>


+++
угу..сам сидел страдал как то.
...
Рейтинг: 0 / 0
19.01.2012, 15:09:25
    #37622379
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
женерики + getClass()
Blazkowicz,

Да, согласен. Прошу прощения. Не обратил внимание на сигнатуру класса в первом посте.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / женерики + getClass() / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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