2014-10-19 1 views
1

나는 이것을 정말로 묻는 법을 모른다. 그러나 같은 ... 이제개체가 할당 된 개체를 가져 오려면 어떻게해야합니까?

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

아니요, 불가능합니다. 그리고, 나는 왜해야하는지 알지 못합니다. –

답변

4

당신이 원하는 것은 직접 가능하지 않다. 당신은

또는

  • owner 필드의 값을 설정합니다 Book 클래스 내부 세터를 사용하거나

    • Book 생성자에 Student 인스턴스에 대한 참조를 전달해야합니다 Student 인스턴스로 이동하십시오.

    같이 보이는 방법이 될 것이다 후자 :

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

    또한,이 같은이 세터를 호출하여 Student.addBook 방법을 수정할 수 있습니다

    book.setOwner(this); 
    

    귀하의 의견에 언급했듯이 Thread.currentThread().getStackTrace()을 사용하여 스택을 트래버스 할 수 있지만 참조를 얻을 수 없습니다 그 기술을 사용해서. class 또는 method이라는 이름을 얻을 수 있지만 새 인스턴스를 만들지 않는 한 그 용도는 제한적입니다. 이것은 모두 매우 정통적이며이 상황에 적절하지 않습니다.

+0

나는 그것이 불가능하다고 생각하는데, StackTrace와 같다고 생각했다. 어쨌든 고마워. – Shady

+0

@ Shady 스택 트래버스에 대한 정보를 추가했으며이 경우 유용하지 않거나 적절하지 않은 이유를 추가했습니다. 이 질문에 대한 답변을 얻으려면 대답으로 받아 들여야합니다. – Justin

관련 문제