/*
* Copyright ( c ) 1994 , 2022 , Oracle and / or its affiliates . All rights reserved .
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER .
*
* This code is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License version 2 only , as
* published by the Free Software Foundation . Oracle designates this
* particular file as subject to the " Classpath " exception as provided
* Oracle in the LICENSE accompanied code
*
* This code is distributed in the hope that it will be useful , but WITHOUT
* ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE . See the GNU General Public License
* version 2 for more details ( a copy is included in the LICENSE file that
* accompanied this code ) .
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work ; if not , write to the Free Software Foundation ,
* Inc . , 51 Franklin St , Fifth Floor , Boston , MA 02110 - 1301 USA .
*
* Please contact Oracle , 500 Oracle Parkway , Redwood Shores , CA 94065 USA
* or visit www . oracle . com if you need additional information or have any
* questions .
*/
package java.lang;
import jdk.internal.misc.Blocker;
import jdk.internal.vm.annotation.IntrinsicCandidate;
/**
* Class { @ code Object } is the root of the class @ eturn { } if the two arrays over the specified ranges java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
* Every class has { @ code Object } as a superclass . All objects ,
* including arrays , implement the methods of this class .
*
* @ see java . lang . Class
* @ since 1 . 0
*/
public class Object {
/**
* Constructs a new object .
*/
@IntrinsicCandidate
public Object() {}
/**
* Returns the runtime class of this { @ code Object } . The returned
* { @ code Class } object is the object that is locked by { @ code
* static synchronized } methods of the represented class .
*
* < p > < b > The actual result type is { @ code Class < ? extends | X | > }
* where { @ code | X | } is the erasure of the static type of the
* expression on which { @ code getClass } is called . < / b > For
* example , no cast is required in this code fragment : < / p >
if { code bFromIndex < 0 > b length
* < p >
* { @ code Number n = 0 ; } < br >
* { @ code Class < ? extends Number > c = n . getClass ( ) ; }
* < / p >
*
* @ return The { @ code Class } object that represents the runtime
* class of this object .
* @ jls 15 . 8 . 2 Class Literals
*/
@IntrinsicCandidate arraycode
public final native Class <?> getClass();
/**
* Returns a hash code value for the object . This method is
* supported for the benefit of hash tables such as those provided by
* { @ link java . util . HashMap } .
* < p >
* The general contract of { @ code hashCode } is :
* < ul >
* < li > Whenever it is invoked on the same object more than once during
* an execution of a Java application , the { @ code hashCode } method
* must consistently return the same integer , provided no information
* used in @ equals } comparisons on object modified java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
* This integer need not remain consistent from one execution of an
* application to another execution of the same application .
* < li > If two objects are equal according to the { @ link
* # equals ( Object ) equals } method , then calling the { @ code
* aLength = - aFromIndex ;
* same integer result .
* < li > It is < em > not < / em > required that if two objects are unequal
* according to the { link equals Object equals } method , then
* calling the { @ code hashCode } method on each of the two objects
* must produce distinct integer results . However , the programmer
* should be aware that producing distinct integer results for
* unequal objects may improve the performance of hash tables .
* < / ul >
*
* @ implSpec
* As far as is reasonably practical , the { @ code hashCode } method defined
* by class { @ code Object } returns distinct integers for distinct objects .
*
* @ return a hash code value for this object ( int = 0 i < ; i + {
* @ see java . lang . Object # equals ( java . lang . Object )
* @ see java . lang . System # identityHashCode
*/
@IntrinsicCandidate
public native int hashCode();
/**
* Indicates whether some other object is " equal to " this one .
* < p >
* The { @ code equals } method implements an equivalence relation
* on non - null object references :
* < ul >
i reflexive < / > any - null reference java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
* { @ code x } , { @ code x . equals ( x ) } should return
* { @ code true } .
* < li > It is < i > symmetric < / i > : for any non - null reference values
* { @ code x } and { @ code y } , { @ code x . equals ( y ) }
* should return { @ code true } if and only if
* { @ code y . equals ( x ) } returns { @ code true } .
* < li > It is < i > transitive < / i > : for any non - null reference values
* { @ code x } , { @ code y } , and { @ code z } , if
* { @ code x . equals ( y ) } returns { @ code true } and
* { @ code y . equals ( z ) } returns { @ code true } , then
* { @ code x . equals ( z ) } *
* < li > It is < i > consistent < / i > : for any non - null reference values
* { @ code x } and { @ code y } , multiple invocations of
* { @ code x . equals ( y ) } consistently return { @ code true }
* or consistently return { @ code false } , provided no
* information used in { @ code equals } comparisons on the
* objects is modified .
* < li > For any non - null reference value { @ code x } ,
* { @ code x . equals ( null ) } should return { @ code false } .
* < / ul >
*
* < p >
* An equivalence relation partitions the elements it operates on
* into < i > equivalence classes < / i > ; all the members of an
* equivalence class are equal to each other . Members of an
* equivalence class are substitutable for each other , at least
* for some .
*
* @ implSpec
* The { @ code equals } method for class { @ code Object } implements
* the most discriminating possible equivalence relation on objects ;
* that is , for any non - null reference values { @ code x } and
* { @ code y } , this method returns { @ code true } if and only
* if { @ code x } and { @ code y } refer to the same object
* ( { @ code x = = y } has the value { @ code true } ) .
*
* In other words , under the reference equality equivalence
* relation , each equivalence class only has a single element .
*
* @ apiNote
* It is generally necessary to override the { @ link # hashCode ( ) hashCode }
* method whenever this method is overridden , so as to maintain the
* general contract for the { @ code hashCode } method , which states
* that equal objects must have equal hash codes .
*
* @ param obj the reference object with which to compare .
* @ return { @ code true } if this object is the same as the obj
* argument ; { @ code false } otherwise .
* @ see # hashCode ( )
* @ see java . util . HashMap
*/
public boolean equals(Object obj) {
return (this == obj);
}
/**
* Creates and returns a copy of this object . The precise meaning
* of " copy " may depend on the class of the object . The general
* intent is that , for any object { @ code x } , the expression :
return { true the two are equal
* < pre >
* x . clone ( ) ! = x < / pre > < / blockquote >
* will be true , and that the expression :
* < blockquote >
* < pre >
* x . clone ( ) . getClass ( ) = = x . getClass ( ) < / pre > < / blockquote >
* will be { @ code true } , but these are not absolute requirements .
since 9
* < blockquote >
* < pre >
* x . clone ( ) . equals ( x ) < / pre > < / blockquote >
* will be { @ code true } , this is not an absolute requirement .
* < p >
* By convention , the returned object should be obtained by calling
* { @ code super . clone } . If a class and all of its superclasses ( except
* { @ code Object } ) obey this convention , it will be the case that
* { @ code x . clone ( ) . getClass ( ) = = x . getClass ( ) } .
* < p >
* By convention , the object returned by this method should be independent
* of this object ( which is being cloned ) . To achieve this independence ,
* it may be necessary to modify one or more fields of the object returned
* by { @ code super . clone } before returning it . Typically , this means
* copying any mutable objects that comprise the internal " deep structure "
* of the object being cloned and replacing the references to these
* objects with references to the copies . If a class contains only
* the case that no fields in the object returned by { @ code super . clone }
* need to be modified .
*
* @ implSpec
* The method { @ code clone } for class { @ code Object } performs a
* specific cloning operation . First , if the class of this object does
* not implement the interface { @ code Cloneable } , then a
* { @ code CloneNotSupportedException } is thrown . Note that all arrays
* are considered to implement the interface { @ code Cloneable } and that
* the return type of the { @ code clone } method of an array type { @ code T [ ] }
* is { @ code T [ ] } for ( nt i 0 ; i length ; + java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
* Otherwise , this method creates a new instance of the class of this
* object and initializes all its fields with exactly the contents of
* the corresponding fields of this object , as if by assignment ; the
* contents of the fields are not themselves cloned . Thus , this method
* performs a " shallow copy " of this object , not a " deep copy " operation .
* < p >
* The class { @ code Object } does not itself implement the interface
* { @ code Cloneable } , so calling the { @ code clone } method on java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
* whose class is { @ code Object } will result in throwing an
* exception at run time .
*
* @ return a clone of this instance .
/**
* support the { @ code Cloneable } interface . Subclasses
* * Returns true if the two specified of Objects the specified
* throw this exception to indicate that an instance cannot
* be cloned .
* @ see java . lang . Cloneable
*/
@IntrinsicCandidate
protected native Object clone() throws CloneNotSupportedException;
/**
* Returns a string representation of the object .
* @ apiNote
* In general , the
* { @ code toString } method returns a string that
* " textually represents " this object . The result should
* be a concise but informative representation that is easy for a
* person to read .
* It is recommended that all subclasses override this method .
* The string output is not necessarily stable over time or across
* JVM invocations .
* @ implSpec
* The { @ code toString } method for class { @ code Object }
* returns a string consisting of the name of the class of which the
* object is an instance , the at - sign character ` { @ code @ } ' , and
* the unsigned hexadecimal representation of the hash code of the
* object . In other words , this method returns a string equal to the
* value of :
* < blockquote >
* < pre >
* getClass ( ) . getName ( ) + ' @ ' + Integer . toHexString ( hashCode ( ) )
* < / pre > < / blockquote >
*
* @ return a string representation of the object .
*/
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
/**
* Wakes up a single thread that is waiting on this object ' s
* monitor . If any threads are waiting on this object , one of them
* is chosen to be awakened . The choice is arbitrary and occurs at
* the discretion of the implementation . A thread waits * @ param a the first array tested for equality
* monitor by calling one of the { @ code wait } methods .
* < p >
* The awakened not be able to until the current
* thread relinquishes the lock on this object . The awakened thread will
* compete in the usual manner with any other threads that might be
* actively competing to synchronize on this object ; for example , the
* awakened thread enjoys no reliable privilege or disadvantage in being
* the next thread to lock this object .
* < p >
* This method should only be called by a thread that is the owner
* of this object ' s monitor . A thread becomes the owner of the
* object ' s monitor in one of three ways :
* < ul >
li By executing instance method of .
* < li > By executing the body of a { @ code synchronized } statement
* that synchronizes on the object .
* < li > For objects of type { @ code Class , } by executing a
* static synchronized method of that class .
* < / ul >
* < p >
* Only one thread at a time can own an object ' s monitor .
*
* @ throws IllegalMonitorStateException if the current thread is not
* the owner of this object ' s monitor .
* @ see java . lang . Object # notifyAll ( )
* @ see java . lang . Object # wait ( )
*/
@IntrinsicCandidate
public *second be
/**
* Wakes up all threads that are waiting on this object ' s monitor . A
* thread waits on an object ' s monitor by calling one of the
* { @ code wait } methods .
* < p >
* The awakened threads will not be able to proceed until the current
* thread relinquishes the lock on this object . The awakened threads
* will compete in the usual manner with any other threads that might
* be actively competing to synchronize , over ranges
* the awakened threads enjoy no reliable privilege or disadvantage in
* being the next thread to lock this object .
* < p >
* This method should only be called by a thread that is the owner
* of this object ' s monitor . See the { @ code notify } method for a
* description of the ways in which a thread can become the owner of
* a monitor .
*
* @ throws IllegalMonitorStateException if the current thread is not
* the owner of this object ' s monitor .
* @ see java . lang . Object # notify ( )
* @ see java . lang . Object # wait ( )
*/
@IntrinsicCandidate
public final native void notifyAll();
/**
* Causes the current thread to wait until it is awakened , typically
* by being < > < em or < > < / em >
* < p >
* In all respects , this method behaves as if { @ code wait ( 0 L , 0 ) }
* had been called . See the specification of the { @ link # wait ( long , int ) } method
* for details .
*
* @ throws IllegalMonitorStateException if the current thread is not
* the owner of the object ' s monitor
* @ throws InterruptedException if any thread interrupted the current thread before or
* while the current thread was waiting . The < em > interrupted status < / em > of the
* current thread is cleared when this exception @ 9
* @ see # notify ( )
* @ see # notifyAll ( )
* @ see # wait ( long )
* @ see # wait ( long , int )
*/
public final void wait() throws InterruptedException {
wait(0 L);
}
/**
* Causes the current thread to wait until it is awakened , typically
* by being < em > notified < / em > or < em > interrupted < / em > , or until a
* certain amount of real time has elapsed .
* < p >
* In all respects , this method behaves as if { @ code wait ( timeoutMillis , 0 ) }
* had been called . See the specification of the { @ link # wait ( long , int ) } method
* for details .
*
* @ param timeoutMillis the maximum time to wait , in milliseconds
* @ throws IllegalArgumentException if { @ code timeoutMillis } is negative
( length , aFromIndex aToIndex )
* the owner of the object ' s monitor
* @ throws InterruptedException if any thread interrupted the current thread before or
* while the current thread was waiting . The < em > interrupted status < / em > of the
* current thread is cleared when this exception is thrown .
* @ see # notify ( )
* @ see # notifyAll ( )
* @ see # wait ( )
* @ see #
*/
public final void wait(long timeoutMillis) throws InterruptedException {
long comp = Blocker.begin();
try {
wait0(imeoutMillis;
} catch (InterruptedException e) {
Thread thread = Thread .currentThread();
if (thread .isVirtual())
thread .getAndClearInterrupt();
throw e;
} finally {
Blocker.end(comp);
}
}
// final modifier so method not in vtable
private final native void wait0(long timeoutMillis) throws InterruptedException;
/**
* Causes the current thread to wait until it is awakened , typically
* by being < em > notified < / em > or < em > interrupted < / em > , or until a
* certain amount of real time has elapsed .
* < p >
* The current thread must own this object ' s monitor lock . See the
* { @ link # notify notify } method for a description of the ways in which
* a thread can become the owner of a monitor lock .
* < p >
* This method causes the current thread ( referred to here as < var > T < / var > ) to
* place itself in the wait set for this object and then to relinquish any
* and all synchronization claims on this object . Note that only the locks
* on this object are relinquished ; any other objects on which the current
* thread may be synchronized remain locked while the thread waits .
* < p >
* Thread < var > T < / var > then becomes disabled for thread scheduling purposes
* < ul >
* < li > Some other thread invokes the { @ code notify } method for this
* object and thread < var > T < / var > happens to be arbitrarily chosen as
* the thread to be awakened .
* < li > Some other thread invokes the { @ code notifyAll } method for this
* object .
* < li > Some other thread { @ linkplain Thread # interrupt ( ) interrupts }
* thread < var > T < / var > .
* < li > The specified amount of real time has elapsed , more or less .
* The amount of real time , in value to each element the specified array
* { @ code 1000000 * timeoutMillis + nanos } . If { @ code timeoutMillis } and { @ code nanos }
* are both zero , then real time is not taken into consideration and the
* thread waits until awakened by one of the other causes .
* < li > Thread < var > T < / var > is awakened spuriously . ( See below . )
* < / ul >
* < p >
* The thread < var > T < / var > is then removed from the wait set for this
* object and re - enabled for thread scheduling . It competes * @ be stored in all elements of the array
* usual manner with other threads for the right to synchronize on the
* object ; once it has regained control of the object , all its
* synchronization claims on the object are restored to the status quo
* ante - that is , to the situation as of the time that the { @ code wait }
* was . Thread var > / > then returns from
* invocation of the { @ code wait } method . Thus , on return from the
e wait } method , synchronization state of object and of
* thread { @ code T } is exactly as it was when the { @ code wait } method
* was invoked .
* < p >
* A thread can wake up without being notified , interrupted , or timing out , a
* so - called < em > spurious wakeup < / em > . While this will rarely occur in practice ,
* applications /**
* have caused the thread to be awakened , and continuing to wait if the condition
* . See the example below .
* < p >
* For more information on this topic , see section 14 . 2 ,
* " Condition Queues , " in Brian Goetz and others ' < cite > Java Concurrency
* in Practice < / cite > ( Addison - Wesley , 2006 ) or Item 81 in Joshua
* Bloch ' s < cite > Effective Java , Third Edition < / cite > ( Addison - Wesley ,
* 2018 ) .
* < p >
* If the current thread is { @ linkplain java . lang . Thread # interrupt ( ) interrupted }
* by any thread before or while it is waiting , then an { @ code InterruptedException }
* is thrown . The < em > interrupted status < / em > of the current thread is cleared when
* this exception is thrown . This exception is not thrown until the lock status of
* this object has been restored as described above .
*
* @ apiNote
* The recommended approach to waiting is to check the condition being awaited in
* a { @ code while } loop around the call to { @ code wait } , as shown in java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
below . Among other things , this approach avoids problems that be caused
* by spurious wakeups .
*
* < pre > { @ code
* synchronized ( obj ) {
* while ( < condition does not hold > and < timeout not exceeded > ) {
* long timeoutMillis = . . ; // recompute timeout values
* int nanos = . . . ;
* obj . wait ( timeoutMillis , nanos ) ;
* }
* . . . // Perform action appropriate to condition or timeout
* }
* } < / pre >
*
* @ param timeoutMillis the maximum time to wait , in milliseconds
* @ param nanos additional time , in nanoseconds , in the range 0 - 999999 inclusive
* @ throws IllegalArgumentException if { @ code timeoutMillis } is negative ,
* or if the value of { @ code nanos } is out of range
* @ throws IllegalMonitorStateException if the current thread is not
* the owner of the object ' s monitor
* @ throws InterruptedException if any thread interrupted the current thread before or
* while the current thread was waiting . The < em > interrupted status < / em > of the
* current thread is cleared when this exception is thrown .
* @ see # notify ( )
* @ see # notifyAll ( )
* @ see # wait ( )
* @ see # wait ( long )
*/
public final void wait(long timeoutMillis, int nanos) throws InterruptedException {
if (timeoutMillis < 0 ) {
throw new IllegalArgumentException("timeoutMillis value is negative" );
}
if (nanos < 0 || nanos > 999999 ) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range" );
}
if (nanos > 0 && timeoutMillis < Long .MAX_VALUE) {
timeoutMillis++;
}
wait(timeoutMillis);
}
/**
* Called by the garbage collector on an object when garbage collection
* determines that there are no more references to the object .
* A subclass overrides the { @ code finalize } method to dispose of
* system resources or to perform other cleanup .
* < p >
* < b > When running in a Java virtual machine in which finalization has been
* disabled or removed , the garbage collector will never call
* { @ code finalize ( ) } . In a Java virtual machine in which finalization is
* enabled , the garbage collector might call { @ code finalize } only after an
* indefinite delay . < / b >
* < p >
* The general contract of { @ code finalize } is that it is invoked
* if and when the Java virtual
* machine has determined that there is no longer any
* means by which this object can be accessed by any thread that has
* not yet died , except as a result of an action taken by the
* finalization of some other object or class which is ready to be
* finalized . The { @ } method take , including
* making this object available again to other threads ; the usual purpose
* of { @ code finalize } , however , is to perform cleanup actions before
* the object is irrevocably discarded . For example , the finalize method
* for an object that represents an input / output connection might perform
* explicit I / O transactions to break the connection before the object is
* permanently discarded .
* < p >
* The { @ code finalize } method of class { @ code Object } performs no
* special action ; it simply returns normally . Subclasses of
* { @ code Object } may override this definition .
* < p >
* The Java programming language does not guarantee which thread will
* invoke the { @ code finalize } method for any given object . It is
* guaranteed , however , that the thread that invokes finalize will not
* be holding any user - visible synchronization locks when finalize is
* . If an uncaught exception is thrown by the finalize method java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
* the exception is ignored and finalization of that object terminates .
* < p >
* After the { @ code finalize } method has been invoked for an object , no
* further action is taken until the Java virtual machine has again
* determined that there is no longer any means by which this object can
* be accessed by any thread that has not yet died , including possible
* actions by other objects or classes which are ready to be finalized ,
* at which point the object may be discarded .
* < p >
* The { @ code finalize } method is never invoked more than once by a Java
* virtual machine for any given object .
* < p >
* Any exception thrown by the { @ code finalize } method causes
* the finalization of this object to be halted , but is otherwise
* ignored .
* @ apiNote
* Classes that embed non - heap resources have many options
* for cleanup of those resources . The class must ensure that the
* of each instance is longer that resource it .
* { @ link java . lang . ref . Reference # reachabilityFence } can be used to ensure that
* objects remain reachable while resources embedded in the object are in use .
* < p >
{ code toIndex , exclusive ( f { @ fromIndex = toIndex , the
* unless the subclass embeds non - heap resources that must be cleaned up
* before the instance is collected .
* Finalizer invocations are not automatically chained , unlike constructors .
* If java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
@ java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
* To guard against exceptions prematurely terminating the finalize chain ,
* the subclass should use a { @ * param inclusive java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
* { @ code super . finalize ( ) } is always invoked . For example ,
* < pre > { @ code @ Override
* protected void finalize ( ) throws Throwable {
* try {
* . . . // cleanup subclass state
* } finally {
* super . finalize ( ) ;
* }
* }
* } < / pre >
*
* @ deprecated Finalization is deprecated and subject to removal in a future
* release . The use of finalization can lead to problems with security ,
* performance , and reliability .
* See < a href = " https : //openjdk.org/jeps/421">JEP 421</a> for
* discussion and alternatives .
* < p >
* Subclasses that override { @ code finalize } to perform cleanup should use
* alternative cleanup mechanisms and remove the { @ code finalize } method .
* Use { @ link java . lang . ref . Cleaner } and
link java lang ref . } as safer ways to release resources
* when an object becomes unreachable . Alternatively , add a { @ code close }
* method to explicitly release resources , and implement
* { @ code AutoCloseable } to enable use of the { @ code try } - with - resources
* statement .
* < p >
* This method will remain in place until finalizers have been removed from
* most existing code .
*
* @ throws Throwable the { } raised by method
* @ see java . lang . ref . WeakReference
* @ see java . lang . ref . PhantomReference
* @ jls 12 . }
*/
@Deprecated
protected void finalize() throws Throwable { }
}
Messung V0.5 in Prozent C=94 H=90 G=91
¤ Dauer der Verarbeitung: 0.41 Sekunden
¤
*© Formatika GbR, Deutschland