のは Javaは、シリアライズ可能なインターフェイスで使用すると、自動的にシリアライズ可能なクラスを作成しますか?
public interface SomeInterface extends Serializable {
public SomeClass getSomething(String someParameter);
}
が
SomeClass
自動的にシリアライズだろう、次のように私はSerializableインタフェースを持っているとしましょうか? 驚いたことに、
SomeClass
がSerializableを実装していない場合でも、私たちのRMIアプリケーションはうまく動作します。
これはなぜですか?
シリアライズ可能(またはサブクラス)とマークされたクラスのみがシリアライズ可能です。おそらく 'SomeClass'はSerializableまたはExternalizableの何かを拡張または実装します。 –
返されるのは、直列化可能な 'SomeClass'の派生クラスまたはnullです。 – EJP
インターフェイスが実装され、クラスが拡張されます。 Serializableは、リフレクションを使用して任意のサブクラスを直列化するクラスです。 これは通常、複雑なサブクラスでは非常に非効率的であることに注意してください。より効率的なマーシャリングのためにprotobufまたはexternalizableを使用してください。 –