【问题标题】:Saving object for later use保存对象以备后用
【发布时间】:2015-04-26 16:46:58
【问题描述】:

我正在尝试练习并在创建对象和有效使用它们方面做得更好。为了练习,我创建了一个名为 Person 的类,在这个类中我定义了每个人都有一个名字、姓氏和年龄。我有方法允许其他类设置人的名字、姓氏和年龄,然后也返回这些值。这就是我卡住的地方。我希望能够做到所有这些,把名字和姓氏与年龄一起记录下来,但把它保存在某个地方,以便以后我可以使用它。示例是为学校课程制作学生名单。我希望能够接收并将 Person 类存储为数组中的特定对象或类似的东西。我确实尝试使用 ArrayList 来执行此操作,但由于某种原因它输出不正确。有什么帮助吗?谢谢!

    import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {

        Person definePerson;
        String name;
        int age;
        ArrayList<Person> persons = new ArrayList<Person>();

        definePerson = new Person();
        System.out.print("Please Enter the first name: ");
        name = definePerson.enterFirst();
        System.out.print("Please Enter the last name: ");
        name = definePerson.enterLast();
        System.out.print("Please Enter their age: ");
        age = definePerson.enterAge();
        persons.add(definePerson);
        System.out.println("The Person ArrayList is: " + persons.toString());

    }
}

【问题讨论】:

  • @AnubianNoob 出局是:[Person@5c647e05]
  • @AndréFecteau 你重写了toString 方法吗?
  • 重写继承自 Object 的 toString()

标签: java oop


【解决方案1】:

问题在于 Java 不知道如何将 Person 对象转换为可显示的字符串。您必须编写一个toString 方法才能这样做。

这是一个例子:

@Override
public String toString() {
    return name + ": " + age + " years old.";
}

这些方法需要在您的 person 类中,以便 ArrayList 对象知道如何显示您的对象。

这是来自AbstractCollection.java 的toString 方法文档:

返回此集合的字符串表示形式。字符串表示由集合元素的列表组成,按其迭代器返回的顺序排列,用方括号 ("[]") 括起来。相邻元素由字符“、”(逗号和空格)分隔。元素通过String.valueOf(Object) 转换为字符串。

【讨论】:

  • 太棒了,谢谢!将保存该代码以供将来参考。
【解决方案2】:

您必须覆盖 Person 类中的 toString() 方法。

人物类

class Person{
 String name;
 int age;

 public String toString(){    
  return "person's name"+name+"person's age"+age;    
}

【讨论】:

    【解决方案3】:

    ArrayList.toString 不会输出列表中的项目,需要迭代ArrayList并打印出其中包含的元素。

    【讨论】:

    • 这样做仍然会给我输出:Person@5c647e05,代码如下:for(int i = 0; i &lt; persons.size(); i++){ System.out.println("The Perons List is: " + persons.get(i)); }
    • 它会给你输出,但这不是最佳实践。每次您必须运行循环来打印人员对象。
    猜你喜欢
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多