제네릭 클래스를 배열 또는 더 나은 기본 배열로 지정해야합니다. 지금까지 내가 일한 것입니다 :자바 일반 및 배열 유형 (예 : 제네릭 유형의 배열)
interface Foo<T> {
void process(T data);
}
public class Moo implements Foo<int[]> {
void process(int[] data) {
// do stuff here
}
}
원시적 인 배열이 Object를 확장하기 때문에 이것은 모두 완벽하게 유효한 Java 코드이며 작동합니다. 이 질문은 완전히 다른입니다. 다른 Java 배열의 일반적인 질문과 마찬가지로 계속 찾습니다. 이 상황에서 사람들은 일반적인 유형의 배열을 만들고 싶어합니다.
문제는 Type T는 Object를 확장하는 모든 것이 될 수 있다는 것입니다. 내가 원하는 것은 같은 것을하는 것입니다 :
<T extends ONLY ARRAYS>
또는
<T extends ONLY PRIMITIVE ARRAYS>.
을하는 것이 가능합니까?
EDIT : 최종 목표는 전달되는 배열 유형에 대한 컴파일 시간 검사를 추가하는 것입니다. 지금은 모든 이전 객체를 전달할 수 있으며 잘 컴파일됩니다. 실수는 클래스 캐스트 예외가 발생하는 런타임에만 발견됩니다. 사실 이것은 컴파일 타임 타입 검사를 강화하기 위해 Java의 Generics 전체 요점입니다.
이 왜 이렇게해야 T.의 배열로 형태를 돌려하려면? – Jeffrey
나는 "가능하다"고 동의한다. 내 직감은 Object보다 primitive-classes 배열의 다른 상위 유형이 없다고합니다. (클래스 클래스에는 isArray()가 있습니다. – esej
서로 다른 기본 유형의 데이터로 이미지를 처리하기위한 단일 인터페이스입니다. 대안은 각 유형에 대해 다른 인터페이스를 갖는 것인데, 이는 더 나쁜 kludge입니다. 예제, Foo_S32, Foo_U8, Foo_F32, ... 등. –