我不知道如何真正问这个问题。 但就像......
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;
}
答案 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()
遍历堆栈但是,您将无法使用该技术获取对象引用。您可以获取class
或method
名称,但除非您打算构建新实例,否则其用途是有限的。这一切都非常不正统,根本不适合这种情况。