java - 如何从另一个类访问一个对象

标签 java

我正在尝试使用 LibraryCard 中的 toString 方法来访问姓名和电子邮件。但是,当我使用 owner.getName() 时,它会给我一个空指针异常错误。我也在努力把卡片做成特定的人。

public class Student{

  public String name;
  public String email;

  public Student(){
    name = "UNASSIGNED";
    email = "UNASSIGNED"; 
  }

  public String getEmail(){ 
    return email;
  }

  public String getName(){
    return name;
  }

  public void setEmail(String newEmail){
    email = newEmail;
  }

  public void setName(String newName){
    name = newName;
  }  
}

public class LibraryCard{

  public Student owner;
  public int borrowCount;

  public LibraryCard(){
    owner = null;
    borrowCount = 0;    
  }

  public void checkOut(int bookNum){
    borrowCount += bookNum;    
  }

  public int getNumberOfooks(){
    return borrowCount;
  }

  public Student getOwnerName(){
    return owner;   
  }

  public void setOwner(Student object){
    owner = object; 
  }

  public String toString(){
    return "\nCard1 Info:\n\t Owner Name: " + owner.getName() + "\n\t Email: " + owner.getEmail() + "\n\t Books borrowed: " + borrowCount ; 
  }
}

和测试人员

public class LibraryCardTester{

  public static void main(String args[]){

    Student student1 = new Student();

    student1.setName("James Johnson");
    student1.setEmail(student1.getName()+"@gmail.edu");
    System.out.println("Name: " + student1.getName());
    System.out.println("Email: " +student1.getEmail());

    Student student2 = new Student();

    student2.setName("Barack Obama");
    student2.setEmail(student1.Name()+"@gmail.edu");
    System.out.println("Name: " + student2.getName());
    System.out.println("Email: " +student2.getEmail());

    LibraryCard card1 = new LibraryCard();
    card1.checkOut(3);

    LibraryCard card2 = new LibraryCard();
    card2.checkOut(2);

    LibraryCard card3 = new LibraryCard();
    card3.checkOut(5);

    System.out.println(card1.toString());
    System.out.println(card2.toString());
    System.out.println(card3.toString());

  }
}

最佳答案

在我看来你还没有为借书证设置所有者:

card1.setOwner(student1);

您的构造函数将所有者设置为 null,因此除非您使用 setOwner() 方法设置所有者,否则所有者将始终为 null,这意味着您正在调用 getName() 空对象上的方法导致 NullPointerException:

  public LibraryCard(){
    owner = null;
    borrowCount = 0;    
  }

关于java - 如何从另一个类访问一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35488814/

相关文章:

Java 从文件中删除整行

java - 从插件: "org.eclipse.jface"调用代码时出现问题

java - UDP 广播上下文中的 'wildcard address' 是什么?

java - mHandlerhandleMessage有时会更新错误的textview

java - 按键将对象列表分组到具有唯一对象子列表的列表中(使用java流)

java - 这是我找到我可以处理的最大质数的最好方法吗?

java - JUnit:针对一种方法创建多个测试方法?

java - windows和linux之间FTP传输时不同的路径分隔符

java - 未找到 Freemarker 模板

java - Gmail POP3 未获取 Java 应用程序中的所有邮件