|
Spec-Zone .ru
спецификации, руководства, описания, API
|
java.lang.ObjectObject единственный корень иерархии классов. Все объекты, включая массивы, реализуют методы этого класса. 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.CloneableCloneable интерфейс должен быть реализован любым классом, который предназначается, чтобы поддерживать или переопределить метод clone (§20.1.5). public interface Cloneable { }
Интерфейс Cloneable не объявляет методов.
Содержание | Предыдущий | Следующий | Индекс
Спецификация языка Java (HTML, сгенерированный Блинчиком "сюзет" Pelouch 24 февраля 1998)
Авторское право © Sun Microsystems, Inc 1996 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com