2009-10-27 10 views
0
나는이 질문에 후속하고

에서 객체의 배열을 작성, 질문에 1268817후속 : 클래스 명

을, 우리는 문자열의 (a 이름 주어진 개체의 isntance을 만들 수있는 방법을 찾아야).

하지만 이러한 객체의 배열을 만드는 방법 ... 초기화하는 방법은 무엇입니까?

나는의 라인에 뭔가 생각하지만, 10 개 요소의 배열을 위해

Object[] xyz = Class.forName(className).newInstance()[]; 
+0

-> "후속"- SO에 좋은 기능이 될 것입니다 - - 후속 질문 및/또는 답변과 함께 질문을 연결하고 또한 물어보고 응답 한 이전 사람들이 후속 조치가 시작되었음을 알리십시오 ... – bushman

+0

@bushman, checkout meta.stackoverflow.com, 어디에서 그러한 제안을 게시하고 토론 할 수 있습니다. – Yishai

답변

2
Object objects = java.lang.reflect.Array.newInstance(Class.forName(classname), 10); 

를 작동 나던 것 같습니다했다.

annoyingly 그것은 개체 배열 대신 개체를 반환합니다. 반환 형식은 객체이어야하므로

Object objects = java.lang.reflect.Array.newInstance(int.class, 10); 

가능한 int는 [], 개체 []에 할당 할 수없는 : 톰이 지적 하듯이

이 허용하는 것입니다. 그러나 당신이 이것을 거의하고 싶지 않기 때문에 여전히 성가시다.

+0

프리미티브의 배열을 반환 할 수 있기 때문입니다. –

+0

탐, 그걸 좀 자세히 설명해 주시겠습니까? 무슨 원시의 배열 – bushman

+0

@ 부시 먼의 배열을 반환의 의미, 그는 만약 당신이 배열을 만들 수 있었다는 int, 그 할당 할 수 없습니다 개체 [] 배열, 그래서 메서드를 반환해야합니다 개체 및 개체 []. – Yishai

2

사용 Array :

Object[] xyz = Array.newInstance(Class.forName(className), 123); 

와 해당 예외를 잡을 수있어.

+1

거기에 캐스트가 있어야합니다. –

0

시도 : 여기

Class<?> c = Class.forName(className); 
Object xyz = Array.newInstance(c, length); 
1

은 문자열의 배열을 만드는 예입니다

완전히 질문 외부
// equiv to String strArray = new String()[10] 

Class cls = Class.forName("java.lang.String"); 
String[] strArray = (String[]) Array.newInstance(cls, 10);