2009-09-05 4 views
0

하나의 변수에 여러 유형을 저장하는 단일 데이터 구조.다른 유형을 저장할 수있는 데이터 구조를 가질 수 있습니까?

제네릭을 요구하지 않고 일부는 동적으로 형식화 된 데이터 구조입니다.

가능합니까?

+0

Java가 유일한 선택 인 경우 David의 답변이 유일한 옵션입니다. 그렇지 않다면, Groovy 나 Scala를 살펴 보는 것이 좋습니다. – Chintan

+0

하드 타이핑 언어이기 때문에 Java에는 동적 입력이 없습니다. 당신이 바라는 가장 좋은 방법은 요소를 Object로 사용하거나 유형을 미리 알고 있다면 generics를 사용하는 것입니다. Chintan이 언급했듯이, 당신이 원한다면 부드럽게 타입 된 언어를 사용해야 할 것입니다. – aperkins

+0

하나의 변수에 다른 유형을 저장하여 해결하고자하는 문제를 추가 할 수 있습니까? 그게 당신에게 '자바 방법'을 수행하는 방법에 대한 답변을 얻을 수 있습니다. 모든 유형을 동일한 방식으로 처리해야하는 경우 인터페이스가 필요합니다. 그렇지 않으면 객체 만 사용하면됩니다. –

답변

3

100 % 확신 할 수 없지만 모든 Java 콜렉션은 형식화되지 않은 데이터를 지원합니다. 예를 들면 :

List dataStructure = new LinkedList(); 

dataStructure.add(new Long(5)); 
dataStructure.add("Hello"); 
dataStructure.add(new BankAccount()); 
2

변수 유형으로 Object 만 사용할 수 있습니다.

정확히 무엇을하고 있는지 확신하지 못합니다. 나는 자바에서 동적 타이핑을 제공하는 제네릭이라고 주장한다.

4

예. 표준 라이브러리의 모든 데이터 구조는 유형 지우기가있는 제네릭을 사용하여 끝납니다. 다음과 같이 입력하십시오.

ArrayList<Object> dynamicData = new ArrayList<Object>(); 

구조체 밖으로 물건을 당긴 후 캐스팅해야한다는 것을 기억하십시오.

+0

그냥 평범한 ArrayList 어때? –

+0

체커 : 원시 타입이 좋지 않습니다. 데이비드 : 타입 지우기는 여기서 전혀 관련이 없습니다. –

+0

베어 타입을 사용하고 List 을 사용하면 컴파일러가 불만을 토로합니다. –

2

기술적으로 모든 Object에서 상속 이후, 그래 당신이 할 수있는 기본 요소 오토 박싱과 함께. 캐스트 및 "if X instanceof Y"명령문을 많이 사용하지 않아도 끈적 시간이 있습니다.

+0

실제로 cast와 instanceof 호출 때문에 * sticky time *을 가지게됩니다 : P – MattC

관련 문제