Как заставить параметр универсального типа быть интерфейсом?

Помогло бы, отправили ли Вы, какую базу данных SQL Вы используете. Для MySQL Вы, вероятно, хотите auto_increment:

ALTER TABLE tableName ADD id MEDIUMINT NOT NULL AUTO_INCREMENT KEY

Не уверенный, если это применяет значения задним числом все же. Если это не делает необходимо просто быть в состоянии выполнить итерации по значениям с хранимой процедурой или в простой программе (как долго, поскольку никто больше не пишет в базу данных), и набор используют эти LAST_INSERT_ID() функция для генерации значения идентификатора.

44
задан Philipp Maschke 19 May 2011 в 21:47
поделиться

1 ответ

Зарезервированное слово “extends” как наряду с параметром типа T используется для определения связанного.

Ԡ¦ в этом контексте, расширяется, используется в общем смысле означать, что любой "расширяется" (как в классах) или "реализации" (как в интерфейсах).’ [, https://docs.oracle.com/javase/tutorial/java/generics/bounded.html ]

Короче говоря, “extends” может только использоваться для определения связанного (ли класс или интерфейс) для некоторого параметра типа класса T и не любого интерфейсного параметра типа T. В Вашем случае,

общедоступный класс MyClass< X расширяет SomeInterface, Y расширяет SomeOtherClass & X>

компилятор решает X, чтобы быть классом. Для второго возникновения X наряду с параметром типа Y (который ясно должен быть классом так или иначе), он требует X быть интерфейсом. Так как это уже решило X, чтобы быть классом, это сигнализирует об ошибке для второго возникновения X,

, тип X не является интерфейсом;

Далее, имел X указанный в первом вхождении как неограниченный параметр, компилятор разрешит его, чтобы быть или классом или интерфейсом и им, would’ve полагал, что второе возникновение X было возможным интерфейсом и таким образом позволил компиляцию. Так как это не было так, компилятор разъясняется,

это не может быть указано как ограниченный параметр

0
ответ дан 26 November 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: