Это - "плохая" идея. Это может быть медленно. Вы это не действительно хорошо для быстрого поиска с индексами также. Единственное реальное время, когда мы используем GUID или UniqueIDs, - когда мы должны связать элементы данных через базы данных, обычно когда у нас есть база данных сервера и локальная база данных для приложения (для разъединенных систем). У Вас действительно нет никакого другого способа держать вещи вместе кроме гуидов. Для индексов и первичных ключей, Вы хотите использовать целочисленное значение и попытку связать вещи с таблицами ассоциации вместо того, чтобы использовать гуиды повсеместно.
Прежде всего: не делайте таких вещей. Это зло. На самом деле, Java 1.1 должна была быть определена гораздо более ограниченно, ИМО.
Существует путаница в отношении того, какой этот
использовать из конструктора Foo.Fooey
. Внешний this ( Foo.this
) будет работать. Но на самом деле this
является Foo
, но его нельзя передать в суперконструктор из-за правил использования this
до того, как суперконструктор вернется (и помимо внешний экземпляр тот же экземпляр, что и внутренний экземпляр). Внешний this суперкласса « ((Bar) this) .this $ 0
» (IIRC) также недоступен из-за ограничений на использование this
.
Решение: быть точным.
Ответ Тома Хотина правильный.
Также посмотрите java puzzler . Примерная глава содержит этот случай и несколько других «интересных» случаев, на которые вы, возможно, захотите взглянуть.
Думаю, JLS и ответы на этот вопрос являются отправной точкой