Я пытаюсь указать, что общий класс должен быть массивом или, еще лучше, примитивным массивом. Пока это то, что я получил:
interface Foo<T> {
void process( T data );
}
public class Moo implements Foo<int[]> {
void process( int[] data ) {
// do stuff here
}
}
Это вполне корректный Java-код и работает, потому что примитивные массивы расширяют Object. Обратите внимание, что этот вопрос полностью отличается от всех других общих вопросов Java, которые я продолжаю находить. В этой ситуации люди хотят создать массив из общего типа.
Проблема заключается в том, что тип T может быть тем, что расширяет Object. Я хочу сделать что-то вроде:
<T extends ONLY ARRAYS>
или
<T extends ONLY PRIMITIVE ARRAYS>.
Возможно ли это?
EDIT: конечной целью было бы добавить проверку времени компиляции в передаваемом массиве. Прямо сейчас любой старый объект может быть передан, и он будет компилироваться просто отлично. Ошибка будет обнаружена только во время выполнения, когда выбрано исключение класса. На самом деле это весь смысл Generics в Java, чтобы добавить более сильную проверку типа времени компиляции.