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

问题描述:

我不知道如何真正问这个。 但像......获取对象分配给的对象,如何?

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

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

现在,如果我们假定我们在书类中的下列变量:

private Student owner; 

现在的问题中,“书”在构造函数中 - >是不是可能获得它被调用的“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

不,这是不可能的。而且,我看不出为什么你应该这样做。 – 2014-10-19 01:23:20

你问的是不是直接可能的。您将需要或者

  • 传递给你的Book构造的Student实例的引用

  • 使用二传手的Book类里面设置owner字段的值到你的Student实例。

后者将是类似如下的方法:

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

此外,您可能需要修改您的Student.addBook方法来调用这个二传手,像这样:

book.setOwner(this); 

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

+0

我想这是不可能的,我认为它就像StackTrace一样。不管怎么说,还是要谢谢你。 – Shady 2014-10-19 12:55:02

+0

@Shady我已经添加了遍历堆栈的信息,以及为什么它在这种情况下既没有用也没有适当的。如果这回答你的问题,请考虑接受它作为答案。 – Justin 2014-10-19 18:05:50