The following properties are available in all Java 2 environments: You can obtain the values of various environment variables by calling the System get Property method. For example, the following program displays the path to the current user directory:
As we mentioned Part I, Object is a super class of all other classes. Object define; the methods shown in Table 14-12, which Me available to every object.
Using clone ( ) and the Clone able Interface
Most of the methods defined by Object arc discussed elsewhere in this book. However, one deserves special attention: clone ). The done ) method generates a duplicate copy of the object on which it is called. Only implement the Clone able interface can be cloned. The Cloneable interface defines no members. It is used to indicate that a class allows a bit wise copy of an object (that is, a cIvile) to be made, If you try to call clone( ) on a class that docs not implement Clone able, it Clone Not Support conniption is thrown. When a clone is made, the constructor for the object being cloned is not called. A clone is simply an exact copy of the original. Cloning is a potentially dangerous action, because it can cause unintended side effects. For example, if the object being cloned contains a reference variable called obRef, then when the done is made, refiner the done will refer to the same object as does fibrin the original. If the.clone makes a.change to the contents of the object referred to by obscure, then it will be changed for the original object, too. Here is another example. If an object opens an I/O stream and is then cloned, two objects will be capable of operating on the same stream. Further, if one of these objects closes the stream, the other object might still attempt to write to it, causing an error.
Because cloning can cause problems, clone] ) is declared as protected inside Object. This means that it must either be called from within a method defined by the class that implements Clone able, or it must be explicitly overridden by that class so that it is r public. Let’s look at an example of each approach. . The following program implements Clone able and defines the method clone test( ), which calls clone ) in Object:
Here, the method clone Test( ) calls clone ) in Object and returns the result. Notice that the object returned by clone() must be cast into its appropriate type (Test Clone). The following example overrides clone( ) so that it can be called from code’ outside of its class. To do this, ‘its access specifier must be public, as shown here:
The side effects caused by cloning are sometimes difficult to see ill first. It is case to think that a class is safe for cloning when it actually is not general. you should not implement Clone able for any class without good reason.