• java反射机制入门04


    需要jxl.jar

    package com.rainmer.main;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import jxl.write.WriteException;
    
    import com.rainmer.bean.Book;
    
    public class ExcleBook {
        public void excleOut(ArrayList<Book> ar){
            WritableWorkbook book = null;//excle对象
            try{
                //创建excle对象
                book = Workbook.createWorkbook(new File("G:/book.xls"));
                //通过excle对象创建一个选项卡对象
                WritableSheet sheet = book.createSheet("sheet", 0);
                for (int i = 0; i < ar.size(); i++) {
                    //创建一个单元格对象
                    Label la0 = new Label(0,i,String.valueOf(ar.get(i).getId()));
                    Label la1 = new Label(1,i,ar.get(i).getName());//创建单元格。参数说明:列,行,值
                    Label la2 = new Label(2,i,ar.get(i).getType());
                    //将创建好的单元格对象放入选项卡中
                    sheet.addCell(la0);
                    sheet.addCell(la1);
                    sheet.addCell(la2);
                }
                //写入目标路径
                book.write();
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                try {
                    book.close();
                } catch (WriteException | IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        
        public ArrayList<Book> excleIn(){
            ArrayList<Book> ar = new ArrayList<Book>();
            Workbook book = null;
            try{
                book = Workbook.getWorkbook(new File("G:/book.xls"));
                Sheet sheet = book.getSheet(0);
                for (int i = 0; i < sheet.getRows(); i++) {
                    Book bo = new Book();
                    Cell cell = sheet.getCell(0,i);//Cell读取的时候的单元格,列,行
                    bo.setId(Integer.valueOf(cell.getContents()));
                    bo.setName(sheet.getCell(1, i).getContents());
                    bo.setType(sheet.getCell(2, i).getContents());
                    ar.add(bo);
                }
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                book.close();
            }
            return ar;
        }
        
        public static void main(String[] args) {
            ExcleBook book = new ExcleBook();
            
            ArrayList<Book> ar = new ArrayList<Book>();
            Book bo1 = new Book();
            bo1.setId(1);
            bo1.setName("火影之鸣人重生");
            bo1.setType("同人");
            Book bo2 = new Book();
            bo2.setId(2);
            bo2.setName("我和我的老婆大人");
            bo2.setType("都市");
            ar.add(bo1);
            ar.add(bo2);
            
            book.excleOut(ar);
            
            ArrayList<Book> result = book.excleIn();
            for (int i = 0; i < result.size(); i++) {
                System.out.println(result.get(i).getName());
            }
        }
    }

    运行结果:

    调用了setName方法
    调用了setName方法
    调用了getName方法
    调用了getName方法
    调用了setName方法
    调用了setName方法
    调用了getName方法
    火影之鸣人重生
    调用了getName方法
    我和我的老婆大人

    ——————————————————————————————————————————————————————————————————————————

      如果有一个项目,要求你实现图书信息导入导出,用户信息导入导出,借阅信息导入导出,维护信息导入导出,管理信息导入导出......。利用反射可以很好地实现代码重用。

    package com.rainmer.util;
    
    import java.io.File;
    import java.lang.reflect.Field;
    import java.util.ArrayList;
    
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    
    import com.rainmer.bean.Book;
    
    public class ExcleUtil {
        
        //如果有一个项目,
        //要求你实现图书信息导入导出,用户信息导入导出,借阅信息导入导出,维护信息导入导出,管理信息导入导出。。。。。
        public void excleOut(ArrayList ar, String str){
            WritableWorkbook book = null;
            try {
                book = Workbook.createWorkbook(new File(str));
                WritableSheet sheet = book.createSheet("sheet", 0);
                for(int i = 0;i<ar.size();i++){
                    Object ob = ar.get(i);
                    Class cl = ob.getClass();
                    Field[] fi = cl.getDeclaredFields();
                    for(int j = 0;j<fi.length;j++){
                        fi[j].setAccessible(true);
                        Label la = new Label(j, i, String.valueOf(fi[j].get(ob)));
                        sheet.addCell(la);
                    }
                }
                book.write();
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                try {
                    book.close();
                } catch (Exception e) {
                    e.printStackTrace();
                } 
            }
        }
        
        public ArrayList excleIn(Class cl, String str){
            ArrayList ar = new ArrayList();
            Workbook book = null;
            try{
                book = Workbook.getWorkbook(new File(str));
                Sheet sheet = book.getSheet(0);
                Field[] fi = cl.getDeclaredFields();
                for (int i = 0; i < sheet.getRows(); i++) {
                    Object ob = cl.newInstance();
                    for (int j = 0; j < fi.length; j++) {
                        fi[j].setAccessible(true);
                        String con = sheet.getCell(j, i).getContents();
                        if(fi[j].getType().toString().equals("class java.lang.String")){
                            fi[j].set(ob, con);
                        }else if(fi[j].getType().toString().equals("int")){
                            fi[j].setInt(ob, Integer.valueOf(con));
                        }
                    }
                    ar.add(ob);
                }
            }catch(Exception e){
                e.printStackTrace();
            }
            return ar;
        }
        
        public static void main(String[] args) {
            ExcleUtil util = new ExcleUtil();
            ArrayList<Book> ar = new ArrayList<Book>();
            Book bo1 = new Book();
            bo1.setId(1);
            bo1.setName("火影之鸣人重生");
            bo1.setType("同人");
            Book bo2 = new Book();
            bo2.setId(2);
            bo2.setName("我和我的老婆大人");
            bo2.setType("都市");
            ar.add(bo1);
            ar.add(bo2);
            util.excleOut(ar, "G:/bookA.xls");

          ArrayList<Book> result = util.excleIn(Book.class, "G:/book.xls");
          for (Book book : result) {
            System.out.println("id="+book.getId()+";name="+book.getName()+";type="+book.getType());
          }

        }
    }

    运行结果:

    调用了setName方法
    调用了setName方法
    调用了getName方法
    id=1;name=火影之鸣人重生;type=同人
    调用了getName方法
    id=2;name=我和我的老婆大人;type=都市

  • 相关阅读:
    HDU 2080 夹角有多大II
    HDU 1412 {A} + {B}
    HDU 2034 人见人爱A-B
    二分查找模版
    Matlab debug
    随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
    拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
    ActionBar点击弹出下拉框操作
    CentOS 64位上编译 Hadoop 2.6.0
    ViewController的生命周期
  • 原文地址:https://www.cnblogs.com/rainmer/p/4665415.html
Copyright © 2020-2023  润新知