|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public class Object
Object корень иерархии class. Каждый class имеет Object как суперкласс. Все объекты, включая массивы, реализуют методы этого class.Class| Конструктор и Описание |
|---|
Object() |
| Модификатор и Тип | Метод и Описание |
|---|---|
protected Object |
clone()
Создает и возвращает копию этого объекта.
|
boolean |
equals(Object obj)
Указывает, " ли некоторый другой объект равен" этому.
|
protected void |
finalize()
Вызванный сборщиком "мусора" на объекте, когда сборка "мусора" решает, что нет больше ссылок на объект.
|
Class<?> |
getClass()
Возвращает время выполнения class этого
Object. |
int |
hashCode()
Возвращает значение хэш-кода для объекта.
|
void |
notify()
Просыпается единственный поток, который ожидает на мониторе этого объекта.
|
void |
notifyAll()
Просыпается все потоки, которые ожидают на мониторе этого объекта.
|
Строка |
toString()
Возвращает строковое представление объекта.
|
void |
wait()
Заставляет текущий поток ожидать, пока другой поток не вызывает
notify() метод или notifyAll() метод для этого объекта. |
void |
wait(long timeout)
Заставляет текущий поток ожидать, пока любой другой поток не вызывает
notify() метод или notifyAll() метод для этого объекта, или указанное количество времени протек. |
void |
wait(long timeout, int nanos)
Заставляет текущий поток ожидать, пока другой поток не вызывает
notify() метод или notifyAll() метод для этого объекта, или некоторый другой поток прерывает текущий поток, или определенное количество реального времени протекло. |
public final Class<?> getClass()
Object. Возвращенный Class объект является объектом, который блокируется static synchronized методы представленного class. Фактический тип результата Class<? extends |X|> где |X| стирание статического типа выражения на который getClass вызывается. Например, никакой бросок не требуется в этом фрагменте кода:
Number n = 0;
Class<? extends Number> c = n.getClass();
Class объект, который представляет время выполнения class этого объекта.public int hashCode()
HashMap. Общий контракт hashCode :
hashCode метод должен последовательно возвращать то же самое целое число, не предоставил информации, используемой в equals сравнения на объекте изменяются. Эта целочисленная потребность не остается непротиворечивой от одного выполнения приложения к другому выполнению того же самого приложения. equals(Object) метод, затем вызывая hashCode метод на каждом из двух объектов должен привести к тому же самому целочисленному результату. equals(java.lang.Object) метод, затем вызывая hashCode метод на каждом из двух объектов должен привести к отличным целочисленным результатам. Однако, программист должен знать, что приведение к отличным целочисленным результатам для неравных объектов может улучшить производительность хэш-таблиц. Столько, сколько разумно практично, метод хэш-кода, определенный class Object действительно возвращает отличные целые числа для отличных объектов. (Это обычно реализуется, преобразовывая внутренний адрес объекта в целое число, но этот метод реализации не требуется языком программирования Java™.)
equals(java.lang.Object), System.identityHashCode(java.lang.Object)public boolean equals(Object obj)
equals метод реализует отношение эквивалентности на ненулевых ссылках на объект:
x, x.equals(x) должен возвратиться true. x и y, x.equals(y) должен возвратиться true если и только если y.equals(x) возвраты true. x, y, и z, если x.equals(y) возвраты true и y.equals(z) возвраты true, тогда x.equals(z) должен возвратиться true. x и y, многократные вызовы x.equals(y) последовательно возвращайтесь true или последовательно возвращайтесь false, предоставленный никакая информация, используемая в equals сравнения на объектах изменяются. x, x.equals(null) должен возвратиться false. equals метод для class Object реализует самое отличительное отношение эквивалентности на объектах; то есть, для любых ненулевых ссылочных значений x и y, этот метод возвраты true если и только если x и y обратитесь к тому же самому объекту (x == y имеет значение true).
Отметьте, что обычно необходимо переопределить hashCode метод всякий раз, когда этот метод переопределяется, чтобы поддержать общий контракт для hashCode метод, который утверждает, что у равных объектов должны быть равные хэш-коды.
obj - ссылочный объект, с которым можно сравниться.true если этот объект является тем же самым как obj параметром; false иначе.hashCode(), HashMapprotected Object clone() throws CloneNotSupportedException
x, выражение: будет истина, и что выражение:x.clone() != x
будетx.clone().getClass() == x.getClass()
true, но они не абсолютные требования. В то время как это обычно имеет место что: будетx.clone().equals(x)
true, это не абсолютное требование. Условно, возвращенный объект должен быть получен, вызывая super.clone. Если class и все его суперклассы (кроме Object) повинуйтесь этому соглашению, оно будет иметь место это x.clone().getClass() == x.getClass().
Условно, объект, возвращенный этим методом, должен быть независимым от этого объекта (который клонируется). Чтобы достигнуть этой независимости, может быть необходимо изменить одно или более полей объекта, возвращенного super.clone прежде, чем возвратить это. Как правило, это означает копировать любые изменчивые объекты, которые включают внутреннюю "глубинную структуру" клонируемого объекта и заменяющий ссылки на эти объекты со ссылками на копии. Если class содержит только примитивные поля или ссылки на неизменные объекты, то он обычно имеет место что никакие поля в объекте, возвращенном super.clone потребность, которая будет изменена.
Метод clone для class Object выполняет определенную работу клонирования. Во-первых, если class этого объекта не реализует интерфейс Cloneable, тогда a CloneNotSupportedException бросается. Отметьте, что все массивы, как полагают, реализуют интерфейс Cloneable и что тип возврата clone метод типа массива T[] T[] где T является любым ссылочным типом или типом примитива. Иначе, этот метод создает новый экземпляр class этого объекта и инициализирует все его поля с точно содержанием соответствующих полей этого объекта, как будто присвоением; содержание полей самостоятельно не клонируется. Таким образом этот метод выполняет "мелкую копию" этого объекта, не "глубокой копии" работа.
class Object самостоятельно не реализует интерфейс Cloneable, так вызов clone метод на объекте, class которого Object приведет к выдаче исключения во время выполнения.
CloneNotSupportedException - если class объекта не поддерживает Cloneable интерфейс. Подклассы, которые переопределяют clone метод может также выдать это исключение, чтобы указать, что экземпляр не может быть клонирован.Cloneablepublic String toString()
toString метод возвращает строку, которая "дословно представляет" этот объект. Результатом должно быть краткое, но информативное представление, которое легко для человека читать. Рекомендуется, чтобы все подклассы переопределили этот метод. toString метод для class Object возвращает строку, состоящую из имени class, которого объект является экземпляром, символ знака at-sign`@', и шестнадцатеричное представление без знака хэш-кода объекта. Другими словами этот метод возвращает строку, равную значению:
getClass().getName() + '@' + Integer.toHexString(hashCode())
public final void notify()
wait методы. Пробужденный поток не будет в состоянии продолжиться, пока текущий поток не оставляет блокировку на этом объекте. Пробужденный поток конкурирует обычным способом с любыми другими потоками, которые могли бы активно конкурировать, чтобы синхронизироваться на этом объекте; например, пробужденный поток не обладает никаким надежным полномочием или недостатком в том, чтобы быть следующим потоком, чтобы заблокировать этот объект.
Этот метод должен только вызвать поток, который является владельцем монитора этого объекта. Поток становится владельцем монитора объекта одним из трех способов:
synchronized оператор, который синхронизируется на объекте. Class, выполняя синхронизируемый статический метод того class. Только одному потоку за один раз может принадлежать монитор объекта.
IllegalMonitorStateException - если текущий поток не является владельцем монитора этого объекта.notifyAll(), wait()public final void notifyAll()
wait методы. Пробужденные потоки не будут в состоянии продолжиться, пока текущий поток не оставляет блокировку на этом объекте. Пробужденные потоки конкурируют обычным способом с любыми другими потоками, которые могли бы активно конкурировать, чтобы синхронизироваться на этом объекте; например, пробужденные потоки не обладают никаким надежным полномочием или недостатком в том, чтобы быть следующим потоком, чтобы заблокировать этот объект.
Этот метод должен только вызвать поток, который является владельцем монитора этого объекта. См. notify метод для описания путей, которыми поток может стать владельцем монитора.
IllegalMonitorStateException - если текущий поток не является владельцем монитора этого объекта.notify(), wait()public final void wait(long timeout)
throws InterruptedException
notify() метод или notifyAll() метод для этого объекта, или указанное количество времени протек. Текущему потоку должен принадлежать монитор этого объекта.
Этот метод вызывает текущий поток (вызовите это T) занять место в ожидать наборе для этого объекта и затем оставить любого и все требования синхронизации на этом объекте. Поток T становится отключенным в целях планирования потоков и бездействует, пока одна из четырех вещей не происходит:
notify метод для этого объекта и потока T, оказывается, произвольно выбирается в качестве потока, который будет пробужден. notifyAll метод для этого объекта. timeout нуль, однако, тогда реальное время не учитывается, и поток просто ожидает пока не уведомлено. wait метод был вызван. Распараллельте T, тогда возвращается из вызова wait метод. Таким образом, по возврату из wait метод, состояние синхронизации объекта и потока T точно, как это было когда wait метод был вызван. Поток может также проснуться без того, чтобы быть уведомленным, прерванный, или синхронизация, так называемое побочное пробуждение. В то время как это будет редко происходить практически, приложения должны принять меры против этого, тестируя на условие, которое должно было заставить поток быть пробужденным, и продолжающий ожидать, если условие не удовлетворяется. Другими словами, ожидает, должен всегда происходить в циклах, как этот:
synchronized (obj) {
while (<condition does not hold>)
obj.wait(timeout);
... // Perform action appropriate to condition
}
(Для получения дополнительной информации по этой теме см. Раздел 3.2.3 в "Параллельном Программировании Дуга Lea в Java (Второй Выпуск)" (Аддисон-Уэсли, 2000), или Элемент 50 в "Эффективном Руководстве по Языку программирования Java Джошуа Блоха" (Аддисон-Уэсли, 2001). Если текущий поток прерывается каким-либо потоком прежде или в то время как это ожидает, то InterruptedException бросается. Это исключение не выдается, пока состояние блокировки этого объекта не было восстановлено как описано выше.
Отметьте что wait метод, поскольку это помещает текущий поток в ожидать набор для этого объекта, разблокировало только этот объект; любые другие объекты, на которых может синхронизироваться текущий поток, остаются заблокированными, в то время как поток ожидает.
Этот метод должен только вызвать поток, который является владельцем монитора этого объекта. См. notify метод для описания путей, которыми поток может стать владельцем монитора.
timeout - максимальное время, чтобы ожидать в миллисекундах.IllegalArgumentException - если значение тайм-аута отрицательно.IllegalMonitorStateException - если текущий поток не является владельцем монитора объекта.InterruptedException - если любой поток, прерванный текущий поток прежде или в то время как текущий поток ожидал уведомления. Прерванное состояние текущего потока очищается, когда это исключение выдается.notify(), notifyAll()public final void wait(long timeout,
int nanos)
throws InterruptedException
notify() метод или notifyAll() метод для этого объекта, или некоторый другой поток прерывает текущий поток, или определенное количество реального времени протекло. Этот метод подобен wait метод одного параметра, но это позволяет более прекрасному управлению количеством времени ожидать уведомления перед отказом. Количеством реального времени, измеренного в наносекундах, дают:
1000000*timeout+nanos
Во всех других отношениях этот метод делает ту же самую вещь как метод wait(long) из одного параметра. В частности wait(0, 0) означает ту же самую вещь как wait(0).
Текущему потоку должен принадлежать монитор этого объекта. Поток выпускает владение этого монитора и ожидает, пока любое из следующих двух условий не произошло:
notify метод или notifyAll метод. timeout миллисекунды плюс nanos параметры наносекунд, протек. Поток тогда ожидает, пока он не может повторно получить владение выполнения резюме и монитора.
Как в одной версии параметра, прерывания и побочные пробуждения возможны, и этот метод должен всегда использоваться в цикле:
synchronized (obj) {
while (<condition does not hold>)
obj.wait(timeout, nanos);
... // Perform action appropriate to condition
}
Этот метод должен только вызвать поток, который является владельцем монитора этого объекта. См. notify метод для описания путей, которыми поток может стать владельцем монитора.timeout - максимальное время, чтобы ожидать в миллисекундах.nanos - дополнительное время, в наносекундах располагаются 0-999999.IllegalArgumentException - если значение тайм-аута отрицательно, или значение nanos не находится в диапазоне 0-999999.IllegalMonitorStateException - если текущий поток не является владельцем монитора этого объекта.InterruptedException - если любой поток, прерванный текущий поток прежде или в то время как текущий поток ожидал уведомления. Прерванное состояние текущего потока очищается, когда это исключение выдается.public final void wait()
throws InterruptedException
notify() метод или notifyAll() метод для этого объекта. Другими словами этот метод ведет себя точно, как будто он просто выполняет вызов wait(0). Текущему потоку должен принадлежать монитор этого объекта. Поток выпускает владение этого монитора и ожидает, пока другой поток не уведомляет потоки, ожидающие относительно монитора этого объекта, чтобы разбудить любого посредством звонка notify метод или notifyAll метод. Поток тогда ожидает, пока он не может повторно получить владение выполнения резюме и монитора.
Как в одной версии параметра, прерывания и побочные пробуждения возможны, и этот метод должен всегда использоваться в цикле:
synchronized (obj) {
while (<condition does not hold>)
obj.wait();
... // Perform action appropriate to condition
}
Этот метод должен только вызвать поток, который является владельцем монитора этого объекта. См. notify метод для описания путей, которыми поток может стать владельцем монитора.IllegalMonitorStateException - если текущий поток не является владельцем монитора объекта.InterruptedException - если любой поток, прерванный текущий поток прежде или в то время как текущий поток ожидал уведомления. Прерванное состояние текущего потока очищается, когда это исключение выдается.notify(), notifyAll()protected void finalize()
throws Throwable
finalize метод, чтобы избавиться от системных ресурсов или выполнить другую уборку. Общий контракт finalize это, это вызывается, если и когда виртуальная машина Java™ решила, что больше нет, любой подразумевает, который к этому объекту может получить доступ любой поток, который еще не умер, за исключением результата мер, предпринятых завершением некоторого другого объекта или class, который готов быть завершенным. finalize метод может предпринять любые меры, включая то, чтобы делать этот объект, доступный снова для других потоков; обычная цель finalize, однако, должен выполнить действия уборки прежде, чем объект будет безвозвратно отброшен. Например, завершить метод для объекта, который представляет соединение ввода/вывода, мог бы выполнить явные транзакции ввода-вывода, чтобы повредить соединение прежде, чем объект будет постоянно отброшен.
finalize метод class Object не выполняет специального действия; это просто обычно возвращается. Подклассы Object может переопределить это определение.
Язык программирования Java не гарантирует, который поток вызовет finalize метод для любого данного объекта. Гарантируется, однако, что поток, который вызывает, завершает, не будет содержать видимых пользователем блокировок синхронизации, когда завершают, вызывается. Если непойманное исключение выдается завершить методом, исключение игнорируется, и завершение того объекта завершается.
После finalize метод был вызван для объекта, никакие дальнейшие меры не предпринимаются, пока виртуальная машина Java снова не решила, что больше нет, любой подразумевает, который к этому объекту может получить доступ любой поток, который еще не умер, включая возможные действия другими объектами или классами, которые готовы быть завершенными, в которой точке может быть отброшен объект.
finalize метод никогда не вызывается не раз виртуальной машиной Java ни для какого данного объекта.
Любое исключение, выданное finalize метод заставляет завершение этого объекта быть остановленным, но иначе игнорируется.
Throwable - Exception повышенный этим методомWeakReference, PhantomReference
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92