まず、trappski
がコメントに指摘されているように、writeExternal
は何も作成しません。 ObjectOutput
は、writeExternal
を呼び出すコードによって渡されるパラメータです。
インターフェイスのトリックは、それらが「契約」であるということです。インターフェイスからオブジェクトを作成することはできませんが、インターフェイスを実装するクラスを作成して、それらのクラスからオブジェクトを作成することができます。次に、インターフェイスを実装しているクラスのオブジェクトを使用して、インターフェイスが必要な場所に置くことができます。あなたはそのようなObjectOutput
を実装するクラスBigObjectOutput
持っている場合は、この場合には
、:
class BigObjectOutput implements ObjectOutput {
// code...
}
を、あなたは次のようにタイプBigObjectOutput
のオブジェクトを作成することができます
BigObjectOutput bigObject = new BigObjectOutput;
そして中にそれを渡しますあなたのメソッドBigObjectOutput
はObjectOutput
を実装しているので、
なぜあなたはこれをしたいですか?あなたはそのタイプObjectOutput
を実装する任意のオブジェクトを渡すことができるように:
class LittleObjectOutput implements ObjectOutput {
// code...
}
LittleObjectOutput littleObject = new LittleObjectOutput();
writeOutput(littleObject);
それは、型がそれだけでBigObjectOutput
秒かかった場合よりもOutputObject
インタフェースを実装する任意のオブジェクトを受け入れるのであれば、あなたのwriteOutput
がより有用です。
ObjectOutputはここでは作成されません。これは呼び出し元によって提供されるようにメソッドの引数です。また、提供されるオブジェクトがインタフェースを実装している限り、オブジェクトはObjectOutput型になることができます。 – trappski