그래서, 난 이미객체의 배열이 아닌 배열 객체를 인쇄 하시겠습니까?
Arrays.toString(arr);
그래서 this question에 나를 가리 키지 발견했습니다.
내 문제는 아주 조금 다릅니다. 이 경우 문제의 배열에 대한 기본 배열 포인터가 없습니다. 나는 그것을 Object 포인터로 가지며, 어떤 타입의 배열 (primitive 또는 다른 것)이 될 수있다. 이 경우 Object 포인터를 Object []에 캐스팅하여 위의 toString() 메서드를 사용할 수 있습니다. 그러나 포인터가 프리미티브 배열 인 경우 런타임 예외가 발생하고 충돌합니다. 그래서?
예 :
double test[] = {1, 2, 3, 4};
Object t = test;
// Now how do I pretty print t as an array with no access to test?
내가이 내 문제를 해결 :
public String unkObjectToString(Object o) {
if(!o.getClass().isArray()) return o.toString();
int len = Array.getLength(o);
String ret = "[";
for(int i = 0; i < len; i++) {
Object q = Array.get(o, i);
ret += unkObjectToString(q);
if(i == len - 1)
ret += "]";
else
ret += ", ";
}
return ret;
}
나는 이것을 피할 수있는 거룩한 신의 신에게기도하고 StackOverflow가 나의 마지막 수단이었습니다. 나는이 가증 한 일을 지금 당장 수행 할 것이지만 내 영혼은 다가오는 저서와 함께 지옥의 깊은 곳까지 제공된다는 것을 알아야한다. 너에게 평화가있어, 형. * salute * – Jordan
Dramatics는 제쳐두고, 왜 이것이 당신을 그렇게 괴롭히는가? 10 줄의 여분의 코드만으로도 당신의 무죄를 잃어버린 느낌이들 것입니다. 그 원시물은 객체가 아니라 Java에서 핵심적인 현실입니다. 이것이 너를 그렇게 괴롭히는 것이라면, 그걸 극복하거나 다른 언어를 선택하십시오. –
내가 작업하고있는 코드가 쉽게 피할 수 있었지만 현재 프로젝트에 뿌리 내리고있는 if-else 체인 1000 선의 공평한 분배를 갖고 있기 때문에 체인에 링크를 추가하는 것을 피하기를 바랬 기 때문에 대부분 나를 귀찮게한다. . Bozho의 라이브러리 함수가했던 것과 비슷한 재귀 함수 (중첩 된 배열을 돕기 위해)를 수정했습니다. 참조 및 비평을 위해이 함수를 제 질문에 추가합니다. – Jordan