がコンパイルジェネリッククラスのジェネリック型パラメータから導出する
public class SerializableObject<T> extends T implements Serializable
{
}
をだから、私はそのジェネリック型パラメータから導出するジェネリッククラスをしたいです。
なぜですか?
私はMap<K, V>
を持っていて、単にそれをシリアル化したいとします。
また、どのキーを持っているかわからない。
どうすればよいですか?
がコンパイルジェネリッククラスのジェネリック型パラメータから導出する
public class SerializableObject<T> extends T implements Serializable
{
}
をだから、私はそのジェネリック型パラメータから導出するジェネリッククラスをしたいです。
なぜですか?
私はMap<K, V>
を持っていて、単にそれをシリアル化したいとします。
また、どのキーを持っているかわからない。
どうすればよいですか?
したがって、ジェネリッククラスをそのジェネリック型パラメータから派生させたいと思います。
あなたはただそれを行うことはできません、私は恐れています。これにはさまざまな技術的な理由がありますが、その中でもタイプ消去があります。
問題の別の解決策を探す必要があります。この考えは致命的なものです。
奇妙なサイドノートとして:これは.NET/C#で可能ですか?それは消去を使用しませんが、私はそれがまだそこで動作しないと思います。 –
デッドエンドuh ... blah ....そしてありがとうジョン。 – Poni
@Joachim:いいえ、.NETはそれを許可しません。 –
他の場所(マップを含むクラスなど)で 'K 'と' V'を定義できれば、 'で十分でしょうか? –
Thomas
これは意味をなさない。シリアライズされていないクラスのオブジェクトをシリアリングすることはできません。クラスの開発者はこれを予見しなければなりません(フィールドを一時的にマークする、他のフィールドがシリアライズ可能であることを確認するなど)。 –
@Joeri +1 "それにインターフェイスを叩いて" LOL!あなたは確信している可能性があります。 – Poni