Один метод - условное агрегирование:
select max(case when seqnum = 1 then CheckBoxList end) as checkbox_0,
max(case when seqnum = 2 then CheckBoxList end) as checkbox_1,
max(case when seqnum = 3 then CheckBoxList end) as checkbox_2,
max(case when seqnum = 4 then CheckBoxList end) as checkbox_3
from (select t.*,
row_number() over (order by id) as seqnum
from t
) t;
Обратите внимание, что при этом будут возвращены четыре столбца независимо от числа в таблице. Если вам нужно столько столбцов, сколько строк. , , тогда вам нужен динамический SQL. Я мог бы предостеречь вас от этого и использовать вместо этого агрегирование строк.
Соответствующие части Спецификации языка Java должны быть:
§8.1.4 : [...] ClassType должен назвать доступный (§6.6) тип класса, иначе произойдет ошибка времени компиляции.
§6.6.1: [...] Элемент (класс, интерфейс, поле или метод) ссылочного типа (класс, интерфейс или массив) или конструктор типа класса доступен только в том случае, если тип доступен, а элемент или конструктор объявлен для разрешения доступа:
Так как ClassType не находится в теле класса, B.Secret
недоступен в этом месте, поэтому A
недоступен, поэтому должна произойти ошибка времени компиляции.
Затмение не так. Если вы рекламируете что-то как
extends A<X>
, вам нужно знать об A и X.
Я склонен думать, что Джавак прав. Чтобы создать новый класс
A<B.Secret>
, универсальный должен иметь доступ к классу, который он использует. Тот факт, что B затем расширяет этот класс, незначителен.