Spec-Zone .ru
спецификации, руководства, описания, API
|
java.lang.Object
Object
единственный корень иерархии классов. Все объекты, включая массивы, реализуют методы этого класса. public classObject
{ public final ClassgetClass
(); public StringtoString
(); public booleanequals
(Object obj); public inthashCode
(); protected Objectclone
() throws CloneNotSupportedException; public final voidwait
()
throws IllegalMonitorStateException,
InterruptedException; public final voidwait
(long millis)
throws IllegalMonitorStateException,
InterruptedException; public final voidwait
(long millis, int nanos)
throws IllegalMonitorStateException, InterruptedException; public final voidnotify
() throws IllegalMonitorStateException; public final voidnotifyAll
() throws IllegalMonitorStateException; protected voidfinalize
()
throws Throwable; }
20.1.1 public final Class
getClass
()
Этот метод возвращает ссылку на уникальный объект типа Class
(§20.3), который представляет класс этого объекта. Это Class
объект является объектом, который блокируется static synchronized
методы представленного класса.
20.1.2 public String
toString
()
Общий контракт toString
это, это возвращает строку, которая "дословно представляет" этот объект. Идея состоит в том, чтобы обеспечить краткое, но информативное представление, которое будет полезно для человека, читающего ее.
toString
метод определяется классом Object
возвращает строку, состоящую из имени класса, которого объект является экземпляром, рекламой в символе '@'
, и шестнадцатеричное представление без знака хэш-кода объекта. Другими словами этот метод возвращает строку, равную значению:
getClass().getName() +Переопределенный'
@'
+ Integer.toHexString(hashCode())
Class
(§20.3), Boolean
(§20.4), Character
(§20.5), Integer
(§20.7), Long
(§20.8), Float
(§20.9), Double
(§20.10), String
(§20.12), StringBuffer
(§20.13), Thread
(§20.20), ThreadGroup
(§20.21), Throwable
(§20.22.4), и Bitset
(§21.2).20.1.3 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
, предоставленный никакая информация, используемая x
и y
в equals
сравнения изменяются.
x
, x.equals(null)
должен возвратиться false
. equals
метод определяется классом Object
реализует самое отличительное отношение эквивалентности на объектах; то есть, для любых ссылочных значений x
и y
, ((Object)x).equals(y)
возвраты true
если и только если x
и y
обратитесь к тому же самому объекту.
Переопределенный Boolean
(§20.4), Character
(§20.5), Integer
(§20.7), Long
(§20.8), Float
(§20.9), Double
(§20.10), String
(§20.12), и Bitset
(§21.2).
20.1.4 public int
hashCode
()
Этот метод поддерживается преимущественно в пользу хэш-таблиц, таких как обеспеченные классом библиотеки Java java.util.Hashtable
(§21.5).
Общий контракт hashCode
следующие:
hashCode
должен последовательно возвращать то же самое целое число. Целое число может быть положительным, отрицательным, или нуль. Это целое число не должно, однако, остаться непротиворечивым от одного приложения Java до другого, или от одного выполнения приложения к другому выполнению того же самого приложения.
equals
метод (§20.1.3), затем вызывая hashCode
метод на каждом из двух объектов должен привести к тому же самому целочисленному результату.
equals
метод (§20.1.3), затем вызывая hashCode
метод на каждом из двух объектов должен привести к отличным целочисленным результатам. Однако, программист должен знать, что приведение к отличным целочисленным результатам для неравных объектов может улучшить производительность хеш-таблиц. hashCode
метод определяется классом Object
действительно возвращает отличные целые числа для отличных объектов. (Это обычно реализуется, преобразовывая внутренний адрес объекта в целое число, но этот метод реализации не требуется языком Java.)
Переопределенный Boolean
(§20.4), Character
(§20.5), Integer
(§20.7), Long
(§20.8), Float
(§20.9), Double
(§20.10), String
(§20.12), и Bitset
(§21.2).
20.1.5 protected Object
clone
()
throws CloneNotSupportedException
Общий контракт клона - то, что это создает и возвращает копию этого объекта. Точное значение "копии" может зависеть от класса объекта. Общее намерение состоит в том что для любого объекта x
, выражение:
x.clone() != xбудет
true
, и что выражение: x.clone.getClass() == x.getClass()будет
true
, но они не абсолютные требования. В то время как это обычно имеет место что: x.clone.equals(x)будет
true
, это не абсолютное требование. Копирование объекта будет обычно влечь за собой создание нового экземпляра его класса, но это также может потребовать копирования внутренних структур данных также. Метод clone
для класса Object
выполняет определенную работу клонирования. Во-первых, если класс этого объекта не реализует интерфейс Cloneable
, тогда a CloneNotSupportedException
бросается. Отметьте, что все массивы, как полагают, реализуют интерфейс Cloneable
. Иначе, этот метод создает новый экземпляр класса этого объекта и инициализирует все его поля с точно содержанием соответствующих полей этого объекта, как будто присвоением; содержание полей самостоятельно не клонируется. Таким образом этот метод выполняет "мелкую копию" этого объекта, не "глубокой копии" работа.
Класс Object
самостоятельно не реализует интерфейс Cloneable
, так вызов clone
метод на объекте, класс которого Object
приведет к выдаче исключения во время выполнения. clone
метод реализуется классом Object
как удобная, общая утилита для подклассов, которые реализуют интерфейс Cloneable
, возможно также переопределение clone
метод, когда определение переопределения может сослаться на это служебное определение вызовом:
super.clone()
20.1.6 public final void
wait
()
throws IllegalMonitorStateException, InterruptedException
Этот метод заставляет текущий поток ожидать, пока некоторый другой поток не вызывает notify
метод (§20.1.9) или notifyAll
метод (§20.1.10) для этого объекта.
Другими словами этот метод ведет себя точно, как будто он просто выполняет вызов wait(0)
(§20.1.7).
20.1.7 public final void
wait
(long millis)
throws IllegalMonitorStateException, InterruptedException
Этот метод заставляет текущий поток ожидать, пока любой некоторый другой поток не вызывает notify
метод (§20.1.9) или notifyAll
метод (§20.1.10) для этого объекта, или определенного количества реального времени протек.
Этот метод можно вызвать только, когда текущий поток уже синхронизируется на этом объекте. Если текущему потоку не принадлежит блокировка на этом объекте, IllegalMonitorStateException
бросается.
Этот метод вызывает текущий поток (вызовите это T) занять место в ожидать наборе (§17.14) для этого объекта и затем оставить любого и все требования синхронизации на этом объекте. Поток T становится отключенным в целях планирования потоков и бездействует, пока одна из четырех вещей не происходит:
notify
метод для этого объекта и потока T, оказывается, произвольно выбирается в качестве потока, который будет пробужден.
notifyAll
метод для этого объекта.
millis
. Если millis
нуль, однако, тогда реальное время не учитывается, и поток просто ожидает пока не уведомлено. wait
метод был вызван. Распараллельте T, тогда возвращается из вызова wait
метод. Таким образом, по возврату из wait
метод, состояние синхронизации объекта и потока T точно, как это было когда wait
метод был вызван. Если текущий поток прерывается (§20.20.31) другим потоком, в то время как это ожидает, то InterruptedException
бросается. Это исключение не выдается, пока состояние блокировки этого объекта не было восстановлено как описано выше.
Отметьте что wait
метод, поскольку это помещает текущий поток в ожидать набор для этого объекта, разблокировало только этот объект; любые другие объекты, на которых может синхронизироваться текущий поток, остаются заблокированными, в то время как поток ожидает.
20.1.8 public final void
wait
(long millis, int nanos)
throws IllegalMonitorStateException, InterruptedException
Этот метод заставляет текущий поток ожидать, пока любой некоторый другой поток не вызывает notify
метод (§20.1.9) или notifyAll
метод (§20.1.10) для этого объекта, или некоторого другого потока прерывает текущий поток, или определенное количество реального времени протекло.
Количеством реального времени, измеренного в наносекундах, дают:
1000000*millis+nanos
Во всех других отношениях этот метод делает ту же самую вещь как метод wait
из одного параметра (§20.1.7). В частности wait(0,
0)
означает ту же самую вещь как wait(0)
. 20.1.9 public final void
notify
()
throws IllegalMonitorStateException
Если какие-либо потоки ожидают (§20.1.7) на этом объекте, один из них выбирается, чтобы быть пробужденным. Выбор произволен и на усмотрение реализации.
notify
метод можно вызвать только, когда текущий поток уже синхронизируется на этом объекте. Если текущему потоку не принадлежит блокировка на этом объекте, IllegalMonitorStateException
бросается.
Пробужденный поток не будет в состоянии продолжиться, пока текущий поток не оставляет блокировку на этом объекте. Пробужденный поток конкурирует обычным способом с любыми другими потоками, которые могли бы активно конкурировать, чтобы синхронизироваться на этом объекте; например, пробужденный поток не обладает никаким надежным полномочием или недостатком в том, чтобы быть следующим потоком, чтобы заблокировать этот объект.
20.1.10 public final void
notifyAll
()
throws IllegalMonitorStateException
Все потоки, ожидая (§20.1.7) на этом объекте пробуждаются.
notifyAll
метод можно вызвать только, когда текущий поток уже синхронизируется на этом объекте. Если текущему потоку не принадлежит блокировка на этом объекте, IllegalMonitorStateException
бросается.
Пробужденные потоки не будут в состоянии продолжиться, пока текущий поток не оставляет блокировку на этом объекте. Пробужденные потоки конкурируют обычным способом с любыми другими потоками, которые могли бы активно конкурировать, чтобы синхронизироваться на этом объекте; например, пробужденные потоки не обладают никаким надежным полномочием или недостатком в том, чтобы быть следующим потоком, чтобы заблокировать этот объект.
20.1.11 protected void
finalize
() throws Throwable
Общий контракт finalize
это, это вызывается, если и когда виртуальная машина Java решила, что больше нет, любой подразумевает, который к этому объекту может получить доступ любой поток, который еще не умер (§12.7), за исключением результата мер, предпринятых завершением некоторого другого объекта или класса, который готов быть завершенным. finalize
метод может предпринять любые меры, включая то, чтобы делать этот объект, доступный снова для других потоков; обычная цель finalize
, однако, должен выполнить действия уборки прежде, чем объект будет безвозвратно отброшен. Например, finalize
метод для объекта, который представляет соединение ввода/вывода, мог бы выполнить явные транзакции ввода-вывода, чтобы повредить соединение прежде, чем объект будет постоянно отброшен.
finalize
метод класса Object
не выполняет специального действия; это просто обычно возвращается. Подклассы Object
может переопределить это определение.
Java не гарантирует, который поток вызовет finalize
метод для любого данного объекта. Гарантируется, однако, что поток, который вызывает finalize
не будет содержать видимых пользователем блокировок синхронизации когда finalize
вызывается. Если непойманное исключение выдается finalize
метод, исключение игнорируется, и завершение того объекта завершается.
После finalize
метод был вызван для объекта, никакие дальнейшие меры не предпринимаются, пока виртуальная машина Java снова не решила, что больше нет, любой подразумевает, который к этому объекту может получить доступ любой поток, который еще не умер, включая возможные действия другими объектами или классами, которые готовы быть завершенными, в которой точке может быть отброшен объект.
finalize
метод никогда не вызывается не раз виртуальной машиной Java ни для какого данного объекта.
java.lang.Cloneable
Cloneable
интерфейс должен быть реализован любым классом, который предназначается, чтобы поддерживать или переопределить метод clone
(§20.1.5). public interface Cloneable
{ }
Интерфейс Cloneable
не объявляет методов.
Содержание | Предыдущий | Следующий | Индекс
Спецификация языка Java (HTML, сгенерированный Блинчиком "сюзет" Pelouch 24 февраля 1998)
Авторское право © Sun Microsystems, Inc 1996 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com