2013-10-05 6 views
0

У меня есть следующий классПолучите значения из java?

public class Patient implements Serializable { 

    private int id; 

    private String name; 

    private String desc; 
    public Patient(int id, String name, String desc) { 

    this.id = id; 
    this.name = name; 
    this.desc=desc; 
    } 

, а затем следующие методы получения и установки в этом классе.

Декларирование Список_массивов

ArrayList<Patient> list = new ArrayList<Patient>(); 

Добавление данных времени выполнения в списке

list.add(new Patient(id++, name.getText(), disDesc.getText()) 

Теперь я хочу, чтобы прочитать элементы, хранящиеся в списке Как я могу сделать это?

System.out.println(list.get(0)); 

Я использую это, но он возвращает адрес объекта класса

+0

Большинство IDE, таких как Eclipse и IntelliJ, смогут автоматически генерировать переопределение toString для вашего класса. Я бы использовал их, по крайней мере, в качестве шаблона. –

ответ

6

Вы должны переопределить toString() метод Patient. Там вы вернете всю информацию о объекте Patient, который вы хотите отобразить.

Пример: (мой личный фаворит)

private static final String SEPARATOR = ", "; 

@Override 
public String toString() 
{ 
     StringBuilder builder = new StringBuilder(); 

     builder.append("ID: ").append(id).append(SEPARATOR); 
     builder.append("Name: ").append(name).append(SEPARATOR); 
     builder.append("Desc: ").append(desc); 

     return builder.toString(); 
} 

Пример 2:

@Override 
public String toString() 
{ 
     return "ID: " + id + ", Name: " + name + ", Desc: " + desc; 
} 

Пример 3:

@Override 
public String toString() 
{ 
     return MessageFormat.format("ID: {0}, Name: {1}, Desc: {2}", id, name, desc); 
} 

Используйте либо один. Это вопрос предпочтения.

+2

Почему бы просто не использовать: 'return 'ID:" + id + "| Имя:" + name + "| Desc:" + desc; '? Упростить чтение ИМО и так же эффективно. Кроме того, используйте 'String.format'. –

+4

@JonSkeet Насколько я знаю, 'StringBuilder' более эффективен, чем конкатенация строк. Я ошибаюсь? Я разработал привычку использовать 'StringBuilder'. – GGrec

+0

любил ваш личный фаворит – WISHY

2

Вы должны бросить элемент,

((Patient) list.get(0)).getName(); 

И вы должны добавить публичный метод геттер к вашему Patient класса.

Смежные вопросы