ตัวอย่างในบทความนี้อธิบายวิธีการส่งออกไฟล์ CSV โดยใช้ Java generics และการสะท้อน แบ่งปันกับทุกคนสำหรับการอ้างอิงของคุณ รายละเอียดมีดังนี้:
โปรเจ็กต์มีความจำเป็นในการส่งออกข้อมูลเป็นไฟล์ CSV เนื่องจากคลาสที่ต่างกันมีคุณลักษณะที่แตกต่างกัน เพื่อให้โค้ดง่ายขึ้น ฉันจึงใช้ข้อมูลทั่วไปและการสะท้อนกลับของ Java และเขียนฟังก์ชันเพื่อทำให้ฟังก์ชันการส่งออกเสร็จสมบูรณ์
คัดลอกรหัสดังต่อไปนี้: สาธารณะ <T> เป็นโมฆะ saveFile (รายการ <T> รายการ String outFile) พ่น IOException {
ถ้า (รายการ == null || list.isEmpty ()) {
กลับ;
-
ถ้า (StringUtils.isEmpty (outFile)) {
โยน IllegalArgumentException ใหม่ ("outfile เป็นโมฆะ");
-
บูลีน isFirst = จริง;
BufferedWriter ออก = null;
พยายาม {
ออก = ใหม่ BufferedWriter (FileWriter ใหม่ (outFile));
สำหรับ (T t : รายการ) {
StringBuilder sb1 = StringBuilder ใหม่ ();
StringBuilder sb2 = StringBuilder ใหม่ ();
คลาส clazz = (คลาส) t.getClass();
ฟิลด์[] fs = clazz.getDeclaredFields();
สำหรับ (int i = 0; i < fs.length; i++) {
สนาม f = fs[i];
f.setAccessible(จริง);
พยายาม {
ถ้า (เป็นอันดับแรก) {
sb1.ผนวก(f.getName());
sb1.ผนวก(");
-
วาลวัตถุ = f.get(t);
ถ้า (val == null) {
sb2.ผนวก("");
} อื่น {
sb2.ผนวก(val.toString());
-
sb2.ผนวก(");
} จับ (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
-
-
ถ้า (เป็นอันดับแรก) {
ออก.write(sb1.toString());
isFirst = เท็จ;
out.newLine();
-
ออก.write(sb2.toString());
out.newLine();
-
} จับ (IOException e1) {
โยน e1;
} ในที่สุด {
พยายาม {
ถ้า (ออก != null) {
ออก.ปิด();
-
} จับ (IOException e2) {
โยน e2;
-
-
-
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน