java에서 데이터베이스 테이블의 클래스 표현을 만들고 싶습니다. 컬럼은 가능한 모든 다른 데이터 유형을 처리 할 수 있도록 일반 클래스로 설계되었습니다.Java에서 동일한 일반 arraylist에 다른 매개 변수화 된 유형 저장
public class TableColumn<T> {
...
}
테이블은 0을 가지고 ... N TableColumns가, 나의 테이블 클래스는 그 모습 않습니다
public class Table {
protected ArrayList<TableColumn<T>> columns =
new ArrayList<TableColumn<T>>();
...
}
아이디어는 다음과 같은 방법으로 열을 추가하는 것입니다.
Table t = new Table();
t.addColumn(String.class);
t.addColumn(Integer.class);
t.addColumn(Date.class);
t.addColumn(String.class);
그리고 나는 다음과 같은 방법으로 데이터를 조작 할 수 있습니다 :
String a = t.Cols(2).Row(3);
t.Col(2).Row(3) = "b";
을하지만 난 내 문제는의 열을 구현하는 방법입니다 ... 그 achiving 내 현재의 방법과 형식 추구한다을 잃어버린하고 잠재적 인 다른 데이터 유형 열을 얻을 수 있습니다.
실마리가 있습니까?
그래서'col (2)'가'col (3)'과 다른 유형이되기를 원하십니까? 그건 불가능하다. 간단하게 타입 체크가 컴파일 타임에 일어나기 때문에, 그리고 * value * 파라미터는 그것들에 아무런 영향을 미치지 않습니다. –
이렇게하는 다른 가능한 방법이 있습니까? 또 다른 개념은 또 다른 구조입니까? –
' T get()'메소드를'T '로 캐스트하면 위조 * 할 수 있습니다. 그러면'String x = foo.get()'과'Integer x = foo.get()'을 컴파일 할 수 있습니다. 그러나 이것은 또한 단점입니다 : 모든 컴파일 타임 타입 검사를 잃게됩니다.런타임시 오류가 발생하면 충돌 및 중지됩니다. –