Spec-Zone .ru
спецификации, руководства, описания, API
|
public class Object
Object
корень иерархии классов. Каждый класс имеет Object
как суперкласс. Все объекты, включая массивы, реализуют методы этого класса.Class
Конструктор и Описание |
---|
Object() |
Модификатор и Тип | Метод и Описание |
---|---|
protected Object |
clone()
Создает и возвращает копию этого объекта.
|
boolean |
equals(Object obj)
Указывает, " ли некоторый другой объект равен" этому.
|
protected void |
finalize()
Вызванный сборщиком "мусора" на объекте, когда сборка "мусора" решает, что нет больше ссылок на объект.
|
Class<?> |
getClass()
Возвращает класс времени выполнения этого
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<? extends |X|>
где |X|
стирание статического типа выражения на который getClass
вызывается. Например, никакой бросок не требуется в этом фрагменте кода:
Number n = 0;
Class<? extends Number> c = n.getClass();
Class
объект, который представляет класс времени выполнения этого объекта.Literals, section 15.8.2 of The Java™ Language Specification.
public int hashCode()
HashMap
. Общий контракт hashCode
:
hashCode
метод должен последовательно возвращать то же самое целое число, не предоставил информации, используемой в equals
сравнения на объекте изменяются. Эта целочисленная потребность не остается непротиворечивой от одного выполнения приложения к другому выполнению того же самого приложения. equals(Object)
метод, затем вызывая hashCode
метод на каждом из двух объектов должен привести к тому же самому целочисленному результату. equals(java.lang.Object)
метод, затем вызывая hashCode
метод на каждом из двух объектов должен привести к отличным целочисленным результатам. Однако, программист должен знать, что приведение к отличным целочисленным результатам для неравных объектов может улучшить производительность хэш-таблиц. Столько, сколько разумно практично, метод хэш-кода, определенный классом Object
действительно возвращает отличные целые числа для отличных объектов. (Это обычно реализуется, преобразовывая внутренний адрес объекта в целое число, но этот метод реализации не требуется языком программирования JavaTM.)
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
метод для класса Object
реализует самое отличительное отношение эквивалентности на объектах; то есть, для любых ненулевых ссылочных значений x
и y
, этот метод возвраты true
если и только если x
и y
обратитесь к тому же самому объекту (x == y
имеет значение true
).
Отметьте, что обычно необходимо переопределить hashCode
метод всякий раз, когда этот метод переопределяется, чтобы поддержать общий контракт для hashCode
метод, который утверждает, что у равных объектов должны быть равные хэш-коды.
obj
- ссылочный объект, с которым можно сравниться.true
если этот объект является тем же самым как obj параметром; false
иначе.hashCode()
, HashMap
protected Object clone() throws CloneNotSupportedException
x
, выражение: будет истина, и что выражение:x.clone() != x
будетx.clone().getClass() == x.getClass()
true
, но они не абсолютные требования. В то время как это обычно имеет место что: будетx.clone().equals(x)
true
, это не абсолютное требование. Условно, возвращенный объект должен быть получен, вызывая super.clone
. Если класс и все его суперклассы (кроме Object
) повинуйтесь этому соглашению, оно будет иметь место это x.clone().getClass() == x.getClass()
.
Условно, объект, возвращенный этим методом, должен быть независимым от этого объекта (который клонируется). Чтобы достигнуть этой независимости, может быть необходимо изменить одно или более полей объекта, возвращенного super.clone
прежде, чем возвратить это. Как правило, это означает копировать любые изменчивые объекты, которые включают внутреннюю "глубинную структуру" клонируемого объекта и заменяющий ссылки на эти объекты со ссылками на копии. Если класс содержит только примитивные поля или ссылки на неизменные объекты, то он обычно имеет место что никакие поля в объекте, возвращенном super.clone
потребность, которая будет изменена.
Метод clone
для класса Object
выполняет определенную работу клонирования. Во-первых, если класс этого объекта не реализует интерфейс Cloneable
, тогда a CloneNotSupportedException
бросается. Отметьте, что все массивы, как полагают, реализуют интерфейс Cloneable
и что тип возврата clone
метод типа массива T[]
T[]
где T является любым ссылочным типом или типом примитива. Иначе, этот метод создает новый экземпляр класса этого объекта и инициализирует все его поля с точно содержанием соответствующих полей этого объекта, как будто присвоением; содержание полей самостоятельно не клонируется. Таким образом этот метод выполняет "мелкую копию" этого объекта, не "глубокой копии" работа.
Класс Object
самостоятельно не реализует интерфейс Cloneable
, так вызов clone
метод на объекте, класс которого Object
приведет к выдаче исключения во время выполнения.
CloneNotSupportedException
- если класс объекта не поддерживает Cloneable
интерфейс. Подклассы, которые переопределяют clone
метод может также выдать это исключение, чтобы указать, что экземпляр не может быть клонирован.Cloneable
public String toString()
toString
метод возвращает строку, которая "дословно представляет" этот объект. Результатом должно быть краткое, но информативное представление, которое легко для человека читать. Рекомендуется, чтобы все подклассы переопределили этот метод. toString
метод для класса Object
возвращает строку, состоящую из имени класса, которого объект является экземпляром, символ знака at-sign`@
', и шестнадцатеричное представление без знака хэш-кода объекта. Другими словами этот метод возвращает строку, равную значению:
getClass().getName() + '@' + Integer.toHexString(hashCode())
public final void notify()
wait
методы. Пробужденный поток не будет в состоянии продолжиться, пока текущий поток не оставляет блокировку на этом объекте. Пробужденный поток конкурирует обычным способом с любыми другими потоками, которые могли бы активно конкурировать, чтобы синхронизироваться на этом объекте; например, пробужденный поток не обладает никаким надежным полномочием или недостатком в том, чтобы быть следующим потоком, чтобы заблокировать этот объект.
Этот метод должен только вызвать поток, который является владельцем монитора этого объекта. Поток становится владельцем монитора объекта одним из трех способов:
synchronized
оператор, который синхронизируется на объекте. 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
это, это вызывается, если и когда виртуальная машина JavaTM решила, что больше нет, любой подразумевает, который к этому объекту может получить доступ любой поток, который еще не умер, за исключением результата мер, предпринятых завершением некоторого другого объекта или класса, который готов быть завершенным. finalize
метод может предпринять любые меры, включая то, чтобы делать этот объект, доступный снова для других потоков; обычная цель finalize
, однако, должен выполнить действия уборки прежде, чем объект будет безвозвратно отброшен. Например, завершить метод для объекта, который представляет соединение ввода/вывода, мог бы выполнить явные транзакции ввода-вывода, чтобы повредить соединение прежде, чем объект будет постоянно отброшен.
finalize
метод класса Object
не выполняет специального действия; это просто обычно возвращается. Подклассы Object
может переопределить это определение.
Язык программирования Java не гарантирует, который поток вызовет finalize
метод для любого данного объекта. Гарантируется, однако, что поток, который вызывает, завершает, не будет содержать видимых пользователем блокировок синхронизации, когда завершают, вызывается. Если непойманное исключение выдается завершить методом, исключение игнорируется, и завершение того объекта завершается.
После finalize
метод был вызван для объекта, никакие дальнейшие меры не предпринимаются, пока виртуальная машина Java снова не решила, что больше нет, любой подразумевает, который к этому объекту может получить доступ любой поток, который еще не умер, включая возможные действия другими объектами или классами, которые готовы быть завершенными, в которой точке может быть отброшен объект.
finalize
метод никогда не вызывается не раз виртуальной машиной Java ни для какого данного объекта.
Любое исключение, выданное finalize
метод заставляет завершение этого объекта быть остановленным, но иначе игнорируется.
Throwable
- Exception
повышенный этим методом
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.