2014-11-16 3 views
0

다른 유형의 값을 저장하고 반환 할 수있는 클래스가 필요합니다. 나는 내 수업을 정의 할 수 없었다. 내가 필요로하는 유일한 클래스는 List 클래스입니다. 데이터베이스 테이블에서 값을 검색합니다. 이 내 접근 방식 :가변 개수의 변수가있는 클래스

//the total number of these variables can vary. The same is true for their types; 
int intValue = 1; 
String stringValue = "text 1"; 
byte[] dataValue = new byte[4]; 


List row = new ArrayList(); 
row.add(intValue); 
row.add(stringValue); 
row.add(dataValue); 

List rows = new ArrayList(); 
rows.add(row); 

intValue = 6; 
stringValue = "text 2"; 
dataValue = new byte[8]; 

row = new ArrayList(); 
row.add(intValue); 
row.add(stringValue); 
row.add(dataValue); 

rows.add(row); 

String text1 = (String) ((List)rows.get(0)).get(1); 
String text2 = (String) ((List)rows.get(1)).get(1); 

당신이 내 구현이 잘못 생각하기 때문에 제네릭 형식의 데이터를 저장할 수있는 더 좋은 방법을 제안 할 수 있습니다.

+1

"제네릭 유형을 저장하는 더 좋은 방법을 제안 할 수 있습니까?"- 대답은 귀하의 질문입니다. – Maroun

+2

동일한 데이터 구조에서'Object' 유형의 변수를 저장하는 것은 일반이 아니며 대부분의 경우 나쁜 설계입니다. – Dici

+0

하지만 캐스팅은 어떨까요? 리소스를 많이 차지합니까? – vovahost

답변

1

음 ... 사용하려는 유형으로 매개 변수화 된 클래스를 일반화 할 수 있습니다. 또는 코드에 T1 t1s[]; T2 t2s[]; T3 t3s[]을 넣고 한 번에 하나씩 만 활성화된다는 점을 고려하여 각 데이터에 대한 변수를 남겨 둘 수 있습니다.

하지만 실제로는 데이터을 의미합니까? 왜냐하면 데이터는 문자열이나 JSON 또는 XML이되어야합니다. 어떤 경우에는 으로 저장하고 전달하십시오.

하지만 실제로 무작위로 임의의 데이터 유형의 개체를 원한다는 의미입니까? 글쎄, 어떻게 지구에서 코드 작성 하시겠습니까? 모든 유형의 오브젝트를 다시 가져 오므로 특정 메소드를 호출 할 수 없습니다. 당신은 심지어 완전히 instanceof 진술의 무리와 함께 추출 할 수없는 완전히 동적이기 때문에 형식이 무엇인지 모르겠다.

데이터가 모두 공통 기본 클래스를 가지고 있으며 기본 클래스 메소드 만 필요합니까? 퍼펙트, extend은 공통 기본 클래스입니다. 이것은 상속을위한 것입니다.

tl; dr : 디자인이 좋지 않고 Java가이를 금지하도록 설계되었습니다. 고쳐.

+0

데이터에 의해 다른 값을 의미합니다. . 데이터베이스 테이블에서 값을 검색합니다. 테이블은 String, int와 같은 다른 Columns 타입을 가질 수 있습니다. 내 listOfObjects는 데이터베이스의 행입니다. – vovahost

+0

열 및 데이터 형식 목록이 있기 때문에 모든 Object 또는 Primitive 형식을 알고 있습니다. – vovahost

1

나는 동적이기 때문에 개인적으로 ArrayList를 선택 하겠지만 배열과 똑같은 것을 할 수 있습니다. 제네릭 형식을 유지할 클래스를 정의하는 방법을 알 수 없다는 말입니까?

ArrayList<Object> myList = new ArrayList<>(); 
myList.add(new String("Some String")); 
myList.add(2); 
System.out.println(myList.get(0)); 
System.out.println(myList.get(1)); 

당신은 정말 당신 "으로 myList를"에서 원하는 객체의 유형에 관계없이 추가 할 수 있습니다 : 당신이해야 할 모든 개체/제네릭 형식을 보유하고 수집로 정의합니다. 이것이 Java에서 다형성을 사용하는 주된 이점입니다.

관련 문제