⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remoteobject.java

📁 JAVA基本类源代码,大家可以学习学习!
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)RemoteObject.java	1.28 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.rmi.server;import java.rmi.Remote;import java.rmi.UnmarshalException;import java.rmi.NoSuchObjectException;/** * The <code>RemoteObject</code> class implements the * <code>java.lang.Object</code> behavior for remote objects. * <code>RemoteObject</code> provides the remote semantics of Object by * implementing methods for hashCode, equals, and toString. * * @author	Ann Wollrath * @author	Laird Dornin * @author	Peter Jones * @version	1.28, 03/01/23 * @since	JDK1.1 */public abstract class RemoteObject implements Remote, java.io.Serializable {    /** The object's remote reference. */    transient protected RemoteRef ref;        /** indicate compatibility with JDK 1.1.x version of class */    private static final long serialVersionUID = -3215090123894869218L;    /**     * Creates a remote object.     */    protected RemoteObject() {	ref = null;    }        /**     * Creates a remote object, initialized with the specified remote     * reference.     * @param newref remote reference     */    protected RemoteObject(RemoteRef newref) {	ref = newref;    }    /**     * Returns the remote reference for the remote object.     *     * <p>Note: The object returned from this method may be an instance of     * an implementation-specific class.  The <code>RemoteObject</code>     * class ensures serialization portability of its instances' remote     * references through the behavior of its custom     * <code>writeObject</code> and <code>readObject</code> methods.  An     * instance of <code>RemoteRef</code> should not be serialized outside     * of its <code>RemoteObject</code> wrapper instance or the result may     * be unportable.     *     * @return remote reference for the remote object     * @since 1.2     */    public RemoteRef getRef() {	return ref;    }        /**     * Returns the stub for the remote object <code>obj</code> passed     * as a parameter. This operation is only valid <i>after</i>     * the object has been exported.     * @param obj the remote object whose stub is neede     * @return the stub for the remote object, <code>obj</code>.     * @exception NoSuchObjectException if the stub for the     * remote object could not be found.     * @since 1.2     */    public static Remote toStub(Remote obj) throws NoSuchObjectException {	if (obj instanceof RemoteStub) {	    return (RemoteStub)obj; 	} else {	    return sun.rmi.transport.ObjectTable.getStub(obj);	}    }    /**     * Returns a hashcode for a remote object.  Two remote object stubs     * that refer to the same remote object will have the same hash code     * (in order to support remote objects as keys in hash tables).     *     * @see		java.util.Hashtable     */    public int hashCode() {	return (ref == null) ? super.hashCode() : ref.remoteHashCode();    }    /**     * Compares two remote objects for equality.     * Returns a boolean that indicates whether this remote object is     * equivalent to the specified Object. This method is used when a     * remote object is stored in a hashtable.     * If the specified Object is not itself an instance of RemoteObject,     * then this method delegates by returning the result of invoking the     * <code>equals</code> method of its parameter with this remote object     * as the argument.     * @param	obj	the Object to compare with     * @return	true if these Objects are equal; false otherwise.     * @see		java.util.Hashtable     */    public boolean equals(Object obj) {	if (obj instanceof RemoteObject) {	    if (ref == null) {		return obj == this;	    } else {		return ref.remoteEquals(((RemoteObject)obj).ref);	    }	} else if (obj != null) {	    /*	     * Fix for 4099660: if object is not an instance of RemoteObject,	     * use the result of its equals method, to support symmetry is a	     * remote object implementation class that does not extend	     * RemoteObject wishes to support equality with its stub objects.	     */	    return obj.equals(this);	} else {	    return false;	}    }    /**     * Returns a String that represents the value of this remote object.     */    public String toString() {	String classname = this.getClass().getName();	return (ref == null) ? classname :	    classname + "[" +ref.remoteToString() + "]";    }    /**     * <code>writeObject</code> for custom serialization.     *     * <p>This method writes this object's serialized form for this class     * as follows:     *     * <p>The {@link RemoteRef#getRefClass(java.io.ObjectOutput) getRefClass}     * method is invoked on this object's <code>ref</code> field     * to obtain its external ref type name.     * If the value returned by <code>getRefClass</code> was     * a non-<code>null</code> string of length greater than zero,     * the <code>writeUTF</code> method is invoked on <code>out</code>     * with the value returned by <code>getRefClass</code>, and then     * the <code>writeExternal</code> method is invoked on     * this object's <code>ref</code> field passing <code>out</code>     * as the argument; otherwise,     * the <code>writeUTF</code> method is invoked on <code>out</code>     * with a zero-length string (<code>""</code>), and then     * the <code>writeObject</code> method is invoked on <code>out</code>     * passing this object's <code>ref</code> field as the argument.     *      * @serialData     *     * The serialized data for this class comprises a string (written with     * <code>ObjectOutput.writeUTF</code>) that is either the external     * ref type name of the contained <code>RemoteRef</code> instance     * (the <code>ref</code> field) or a zero-length string, followed by     * either the external form of the <code>ref</code> field as written by     * its <code>writeExternal</code> method if the string was of non-zero     * length, or the serialized form of the <code>ref</code> field as     * written by passing it to the serialization stream's     * <code>writeObject</code> if the string was of zero length.     *     * <p>If this object is an instance of     * <code>java.rmi.server.RemoteStub</code> that was returned from any of     * the <code>UnicastRemoteObject.exportObject</code> methods     * and custom socket factories are not used,     * the external ref type name is <code>"UnicastRef"</code>.     *     * If this object is an instance of     * <code>RemoteStub</code> that was returned from any of     * the <code>UnicastRemoteObject.exportObject</code> methods     * and custom socket factories are used,     * the external ref type name is <code>"UnicastRef2"</code>.     *     * If this object is an instance of     * <code>RemoteStub</code> that was returned from any of     * the <code>java.rmi.activation.Activatable.exportObject</code> methods,     * the external ref type name is <code>"ActivatableRef"</code>.     *     * If this object is an instance of     * <code>RemoteStub</code> that was returned from     * the <code>RemoteObject.toStub</code> method (and the argument passed     * to <code>toStub</code> was not itself a <code>RemoteStub</code>),     * the external ref type name is a function of how the remote object     * passed to <code>toStub</code> was exported, as described above.     *     * If this object is an instance of     * <code>RemoteStub</code> that was originally     * created via deserialization,     * the external ref type name is the same as that which was read     * when this object was deserialized.     *     * <p>If this object is an instance of     * <code>java.rmi.server.UnicastRemoteObject</code> that does not     * use custom socket factories,     * the external ref type name is <code>"UnicastServerRef"</code>.     *     * If this object is an instance of     * <code>UnicastRemoteObject</code> that does     * use custom socket factories,     * the external ref type name is <code>"UnicastServerRef2"</code>.     *     * <p>If this object is an instance of     * <code>java.rmi.activation.Activatable</code>,     * the external ref type name is <code>"ActivatableServerRef"</code>.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -