打印出存储在对象中的字符串时遇到一个小问题。该对象存储在ArrayList中。
我有三个使用我的程序:
朋友班:
package one;
public class Friend implements InterfaceFriend {
private String name;
private String email;
private String phone;
public Friend(String name, String phone, String email) {
// TODO Auto-generated constructor stub
}
@Override
public String getPhone() {
return phone;
}
@Override
public String getEmail() {
return email;
}
@Override
public String getName() {
return name;
}
@Override
public void setPhone(String phone1) {
phone1 = phone;
}
@Override
public void setEmail(String email1) {
email1 = email;
}
@Override
public void setName(String name1) {
name1 = name;
}
}
FriendInterface:
package one;
public interface InterfaceFriend {
String getPhone(); // Returns phone number.
String getEmail(); // Returns email.
String getName(); // Returns name.
void setPhone(String phone); // Sets phone.
void setEmail(String email); // Sets email.
void setName(String name); // Sets name.
}
和测试类:
package one;
import java.util.ArrayList;
import java.util.List;
public class FriendTest {
static List<Friend> friends;
static Friend friend;
public static void main(String args[]) {
friends = new ArrayList<Friend>();
friend = new Friend("Jane Doe", "085-5555555", "jane.doe@gmail.com");
friends.add(friend);
friend = new Friend("John Doe", "085-1111111", "john.doe@gmail.com");
friends.add(friend);
friend = new Friend("Paul Weller", "085-3333333", "paul.weller@gmail.com");
friends.add(friend);
System.out.println("Friends added to list:");
System.out.println(friends.toString());
}
}
问题是,当我从测试类运行System.out.println(friends.toString());
时,我得到了这个:
好友添加到列表:
[one.Friend@38f0b51d,one.Friend@4302a01f,one.Friend@615e7597]
而是使用我想要的值的字符串。任何帮助表示赞赏。
答案 0 :(得分:2)
您需要覆盖已经注释的toString()
类中的Friend
方法,但您还需要完成您正在使用的构造函数。
public Friend(String name, String phone, String email) {
this.name = name;
this.phone = phone;
this.email = email;
}
此外,你的setter中的代码是向后的。
答案 1 :(得分:1)
在您的朋友班中,您需要覆盖toString()
public class Friend implements InterfaceFriend {
...
...
public String toString(){
return name + " " + email + " " + phone; // or whatever format you want printed
}
}
答案 2 :(得分:0)
你只需覆盖toString方法。把它放在朋友班里面。问题解决了..
public String toString(){
// return your Strings..
}
答案 3 :(得分:0)
覆盖类中的toString(),以适合您的输出。您获得该输出的原因是因为对象中提供的默认toString()是哈希码。
public String toString(){
return name; //assuming you only want to display the name else edit it
}