이 문서의 예에서는 Java 제네릭 및 리플렉션을 사용하여 CSV 파일을 내보내는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부사항은 다음과 같습니다:
프로젝트에서는 클래스마다 속성이 다르기 때문에 데이터를 CSV 파일로 내보낼 필요가 있습니다. 코드를 단순화하기 위해 Java의 제네릭과 리플렉션을 적용하고 내보내기 기능을 완성하는 함수를 작성했습니다.
다음과 같이 코드를 복사합니다. public <T> void saveFile(List<T> list, String outFile) throws IOException {
if (list == null || list.isEmpty()) {
반품;
}
if (StringUtils.isEmpty(outFile)) {
throw new IllegalArgumentException("outfile is null");
}
부울 isFirst = true;
BufferedWriter 출력 = null;
노력하다 {
out = new BufferedWriter(new FileWriter(outFile));
for (T t : 목록) {
StringBuilder sb1 = 새로운 StringBuilder();
StringBuilder sb2 = 새로운 StringBuilder();
클래스 clazz = (클래스) t.getClass();
Field[] fs = clazz.getDeclaredFields();
for (int i = 0; i < fs.length; i++) {
필드 f = fs[i];
f.setAccessible(true);
노력하다 {
if (isFirst) {
sb1.append(f.getName());
sb1.append(",");
}
객체 val = f.get(t);
if (val == null) {
sb2.append("");
} 또 다른 {
sb2.append(val.toString());
}
sb2.append(",");
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
if (isFirst) {
out.write(sb1.toString());
isFirst = 거짓;
out.newLine();
}
out.write(sb2.toString());
out.newLine();
}
} 잡기(IOException e1) {
e1을 던져라;
} 마지막으로 {
노력하다 {
if (out != null) {
종료.닫기();
}
} 잡기(IOException e2) {
e2를 던져라;
}
}
}
이 글이 모든 사람의 Java 프로그래밍에 도움이 되기를 바랍니다.