获取分配对象的对象,如何?

时间:2014-10-19 01:21:52

标签: java

我不知道如何真正问这个问题。 但就像......

Student stud1 = new Student("Shady");
Student stud2 = new Student("Nick");
Student stud3 = new Student("Name");

stud2.addBook(new Book(Book.BOOK_MISERABLES, 3););

现在假设我们在Book类中有以下变量:

private Student owner;

现在的问题,在“Book”的构造函数中 - >是否有可能获得被调用的“stud2”对象?不向构造函数添加其他参数?如果是这样,怎么样?我认为这是可能的......所以它会是这样的:

private Student owner;

public Book(int bookNum, int weeks){
    this.owner = this.GET_THE_TARGET_THIS_IS_CALLED_ON;
    this.bookNumber = bookNum;
    this.time = weeks;
}

1 个答案:

答案 0 :(得分:4)

您所要求的不是直接可能的。你需要

  • 将对Student实例的引用传递给您的Book构造函数

  • 使用Book类中的setter将owner字段的值设置为Student个实例。

后者将是一种看起来像这样的方法:

public void setOwner(Student owner) {
  this.owner = owner;
}

此外,您可能需要修改Student.addBook方法来调用此setter,如下所示:

book.setOwner(this);

正如您在评论中提到的,您可以使用Thread.currentThread().getStackTrace()遍历堆栈但是,您将无法使用该技术获取对象引用。您可以获取classmethod名称,但除非您打算构建新实例,否则其用途是有限的。这一切都非常不正统,根本不适合这种情况。