特定の Java クラスのインスタンスを、プリミティブ型のみを含む別のインスタンスに「フラット化」/変換したいと考えています。
まだプリミティブ型ではないオブジェクトのすべてのフィールドも再帰的にフラット化する必要があるため、結果のオブジェクトには元のオブジェクトのフラット化されたビューがプリミティブ型のみで含まれます。
たとえば、次のクラスがあるとします。
class Element {
int id_;
Position position_;
}
class Position {
int x_;
int y_;
}
結果のインスタンスは次のタイプになります。
class FlattenedElement {
int id_;
int x_;
int y_;
}
そして、私はそのような振る舞いを期待します:
Element e = new Person ( 42, new Position(0, 0) );
FlattenedElement fe = e.flatten();
それができるツール/ライブラリはありますか?
それとも、リフレクション API を使用して独自のフラットナーを作成する必要がありますか?
-- 以下のほとんどのコメントを編集 --
String
and との混同を避けるために例を変更しましたbyte
(文字列を扱う必要はありません)。
結果の変換でデータのセマンティクスを維持する必要があります。出力プリミティブ型データは、プリミティブ データ型のみを理解する OpenCL を使用した並列計算に直接関与します。
つまり、カプセル化を解除して、クラス階層に埋め込まれたプリミティブ データ型を直接操作する必要があります。