获取对象分配给的对象,如何?
问题描述:
我不知道如何真正问这个。 但像......获取对象分配给的对象,如何?
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;
}
答
你问的是不是直接可能的。您将需要或者
- 传递给你的
Book
构造的Student
实例的引用
或
- 使用二传手的
Book
类里面设置owner
字段的值到你的Student
实例。
后者将是类似如下的方法:
public void setOwner(Student owner) {
this.owner = owner;
}
此外,您可能需要修改您的Student.addBook
方法来调用这个二传手,像这样:
book.setOwner(this);
正如您在评论中提到的那样,您可以使用Thread.currentThread().getStackTrace()
遍历堆栈但是,您将无法获取对象引用使用该技术。您可以获得class
或method
的名称,但除非您打算构建新实例,否则其用途是有限的。这是非常非正统的,并不适合这种情况。
不,这是不可能的。而且,我看不出为什么你应该这样做。 – 2014-10-19 01:23:20