2013-06-06 2 views
1

Это, как вы перегружать toString() метод:Java перегрузки ToString() метод, когда массив класса дается

public class Person extends Object { 
    @Override 
    public final String toString() { 
     Gson gson = new GsonBuilder().serializeNulls().create(); 
     return (gson.toJson(this)); 
    } 
} 

В этом примере я получаю строку JSON при вызове toString() метод Person вместо значения по умолчанию строковое представление Object.

Но что, если у меня есть массив Person как:

Person[] persons = new Person[3]; 
System.out.println(persons.toString()); 

Что я должен делать, или какой метод (ы) я должен переопределить в этом случае?

+2

Это невозможно, но вы можете использовать Arrays.toString (Object [] а); который вызовет метод toString() для каждого объекта в массиве. – michal

+0

Зачем сбрасывать и просить закрыть этот вопрос? Я имею в виду, да, есть еще одно подобное, но я не мог найти его, потому что есть много способов задать этот вопрос. Спасибо за вашу помощь, я буду использовать 'Arrays.toString (Object [] a)'. – arminb

ответ

1

Вы не можете переопределить массив toString по умолчанию. Если вы хотите преобразовать массив объектов в строку, используйте Arrays.toString().

2

Вы не можете переопределить версию массива, так как их версия без массива. Что действительно происходит, так это то, что массив имеет метод toString, который будет вызываться.

Если вы использовали коллекцию Java в отличие от массива, она будет распечатывать ваш метод Person#toString 3 раза, поскольку Collection#toString выполняет итерацию по каждому объекту в коллекции.

+0

Он вызовет метод массива toString. –

+0

Вот что я сказал: «Что на самом деле происходит, что у массива есть метод toString» – greedybuddha

+0

Вы правы, но не пытаетесь вызвать Person # toString. –

1

Вы не можете переопределить метод toString на массив, но вы можете использовать Arrays.toString(Object[]) для печати массива.

1

Прежде всего, вам не нужно расширять объект, он есть по умолчанию.

Чтобы распечатать содержимое массива можно использовать:

Person[] persons = new Person[3]; 
System.out.println(Arrays.toString(persons)); 
Смежные вопросы