어떤 이유로이 문제가 발생합니다.특정 개체를 Java의 특정 배열에 캐스트
두 개의 Java Object가 있는데, 둘 다 원시 또는 비 기본 배열을 포함하여 무엇이든 될 수 있습니다.
평등 검사를 수행해야합니다.
배열 인 경우 런타임 인스턴스 대신 내용을 확인해야합니다.
그래서 예를 들어, 나는 다음과 같은 방법이 있다고 가정 해 봅시다 :
/**
* Returns true if the two parameters are arrays, and they both contain
* the same content.
* @param aObject1 An object
* @param aObject2 An object
* @return
*/
private boolean equalsArray(Object aObject1, Object aObject2) {
if(aObject1==null){
return false;
}
if(aObject2==null){
return false;
}
if(!aObject1.getClass().isArray()){
return false;
}
if(!aObject2.getClass().isArray()){
return false;
}
//How do I check if the two arrays here contain the same objects
//without knowledge of their type???
}
참고 배열은 아무것도 할 수있는, 그리고 가장 가능성 [] 객체되지 않습니다, 오히려 푸 [] 또는 바 [ ].
제안 사항? 객체 []에 캐스트 할 수 없기 때문에 Array.equals (Object [], Object [])를 수행 할 수 없습니다. 당신이해야합니다 그러나
'를 Arrays.equals (([]) aObject1는, (개체 []) aObject2이 객체)'는 물론 캐스트의 수에'Object' 갈 수있는 방법입니다 'Object []'. – anubhava
@anubhava parms가 프리미티브 (primitive) 배열 인 경우 Object []에 캐스트가 실패합니다. – pholser
@ Tovi7 내 대답을 확인하십시오 –