Вам нужно использовать отражение, чтобы добраться до более глубокой структуры Object, если вы не хотите полагаться на сам класс объекта, чтобы перегружать метод Object toString (чтобы получить что-то более полезное, чем печать имени класса и хеш-кода ..) .)
Я предлагаю использовать библиотеку, которая использует отражение, чтобы перейти к более глубокой структуре, например GSON: http://code.google.com/p/google-gson/
public static String print(Object object) {
return new Gson().toJson(object);
}
public static void test() {
System.out.println(print(new int[][] {new int[] {1, 2, 3} }));
// outputs: [[1,2,3]]
System.out.println(print(new String[] { "aa", "bb", "cc" }));
// outputs: ["aa","bb","cc"]
}
Это печатает массивы без особых усилий, включая многомерные массивы и примитивные массивы.
Но реальное преимущество заключается в том, что он печатает объекты любого класса единообразным образом, независимо от того, был ли класс переопределен toString любым полезным способом или нет.