A. Primitive data types, such as char, int, double, or boolean, are passed by value like a local call.
B. Local object types, such as java.lang.String, are also passed by value, but this is completely different from passing an object parameter in a local call. Any object can be used as a parameter in a remote call as long as it is serializable. The stub serializes the object parameter and sends it in a stream across the network. The skeleton deserializes the stream into an object.
C. Remote object types are passed differently from local objects. When a client invokes a remote method with a parameter of a remote object type, the stub of the remote object is passed. The server receives the stub and manipulates the parameter through it.
D. When a client invokes a remote method with parameters, passing the parameters is handled by the stub and the skeleton.