最初の質問、親切にしてください!印刷するJavaオブジェクトの内容を確認
私は、次のような状況があります。
私はどちらか本当に複雑ではありませんが、単純ではない別の件のデータを持つクラスのカップルを、持っています。
これらのクラスのオブジェクトからこれらのクラスのデータを取得し、特定の形式で出力する必要があります。これはまだ正確にはわかりません。例えば
:
public class A{
public int data1;
public String data2;
}
public class B{
public Map<String, A> map1;
}
B obj;
私はテーブルのように、所定のフォーマットにPDFにOBJを印刷する必要があります。
私の考えは、pdfのxml記述を派生させ、xmlを読んで、どこにテキストを置くか、どのフォントを使ってPDF書込みを行うかのようにすることです。例えば
:
<document>
<text id="val1.data1" x="10" y="10" />
<text id="val1.data2" x="100" y ="10" />
<text id="val2.data1" x="10" y="100" />
<text id="val2.data2" x="100" y ="100" />
</document>
このソリューションは、それは私がコードからドキュメントフォーマットを分離することを可能にしても、私はオブジェクトからデータを取得分離することはできませんが、私はまだ取得する必要がありますidsを手動で変更してください。
if(id=="data1"){
A.getData1();
}else if(id=="data2"){
A.getData2();
}
私が避けたいものです。
私はそれをどのように設計することができますか?私はすでにどこでも好きなものをpdfで描くことができます。必要なときにデータを取得することができます。ドキュメントテンプレートとそのデータはいつでも私が知る限り変更できるので、すべてをよりデカップリングしたいと思います。
ありがとうございました!
[私はJavaで文字列を比較しますか]をお読みください(http://stackoverflow.com/questions/513832/how-do-i -compare-strings-in-java) – SomeJavaGuy
私は、最も簡単な方法は、キー "val1.data1" 'を使って' val1.data1'をマップに入れることだと思うので、単に ' XML内の「id」。 –
マップは良い出発点です。私はそれをデカップルし、実際にレンダリングするクラスにオブジェクトに直接作用するのではなく、書き込む値を表すマップを取得させることができます。テンプレートがあまりにも多く変更された場合は、コードを変更する必要がありますが、結局のところ回避できないかどうかはわかりません。 – bracco23