Как найти объект, к которому принадлежит член - PullRequest
0 голосов
/ 17 января 2019
class MySchool {
    ArrayList<MyTeacher> teacher;
    ...
}

class MyTeacher {
    ...
}

Когда я выполняю некоторую обработку экземпляра MyTeacher, как я могу найти экземпляр MySchool, к которому они принадлежат? MyTeacher не существует независимо, они создаются MySchool, однако я бы не стал делать MyTeacher подклассом MySchool, так как это могло бы запутать другие части программы.

Я мог бы сохранить ссылку на MySchool в каждом экземпляре MyTeacher, но это выглядит немного не элегантно, мне было интересно, есть ли простая функция, которая может сказать мне.

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 17 января 2019

JVM не отслеживает такую ​​информацию (кроме как во время сборки мусора), поэтому нет другого способа, кроме как сохранить обратную ссылку в классе "member".

И если вам нужна эта информация, я не вижу проблем с сохранением такой ссылки.

0 голосов
/ 17 января 2019

На самом деле, ссылка это нормальный способ сделать это. У каждого учителя может быть школа, которая не является уникальной среди всех учителей, поэтому, чтобы знать эту школу, необходимо добавить ссылку. Я не понимаю, почему это не элегантно.

Кроме того, возможно, что у учителя нет школы, поэтому обнулите ссылку, или, если у учителя может быть несколько школ, вам нужен список школ для справки.

Если вы действительно не хотите эту ссылку, другой вариант - пройтись по всем школам и найти интересующего вас учителя. Если учитель может преподавать только в одной школе, вы можете прекратить поиск, когда найдете учителя. в противном случае вы должны составить список, повторяя все школы и учителей. Это довольно не элегантное решение, и его следует использовать, только если вы хотите минимизировать объем памяти. Время обработки может значительно увеличиться.

...