java中instanceof的用法和实战

java 中的instanceof 是一个二元操作符(运算符)运算符,由于是字母组成,所以是Java的保留关键字,但是和>=,<=,==属同一类,它的作用是用来判断,instanceof 左边对象是否为instanceof 右边类的实例,返回一个boolean类型值。还可以用来判断子父类的所属关系。

用法:
boolean result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

在做项目中用到的实战应用。

    public void exportExcelFileReflect(SXSSFSheet sheet,List<String> properties, List<Object> list, int startRow) throws Exception{
        for(Object o : list){
            SXSSFRow row = sheet.createRow(++startRow);//从下一行开始
            SXSSFCell cell = null;
            //T t = dataList.get(i);
            //使用反射将数据填充到cell
            int cellnum = 0;

            for(String p : properties){
                PropertyDescriptor pd2 = getPropertyDescriptor(o.getClass(),p);
                Method rm = pd2.getReadMethod();
                cell = row.createCell(cellnum);
                Object value = rm.invoke(o, new Object[] {});
                if(value instanceof Double){
                    cell.setCellValue((Double)value);
                }else if(value instanceof Date){
                    cell.setCellValue(DateUtil.dateToLongString((Date)value));
                }else if(value instanceof String){
                    cell.setCellValue((String)value);
                }else if(value instanceof Boolean){
                    cell.setCellValue((Boolean)value);
                }else if(value instanceof Long){
                    cell.setCellValue((Long)value);
                }else if(value instanceof Integer){
                    cell.setCellValue((Integer)value);
                }else if(value instanceof Float){
                    cell.setCellValue((Float)value);
                }else if(value instanceof Short){
                    cell.setCellValue((Short)value);
                }else if(value == null){
                    cell.setCellValue("");
                }else{
                    cell.setCellValue(value+"");
                }
                cellnum ++ ;
            }
            if(startRow % 100 == 0) {
                ((SXSSFSheet)sheet).flushRows(100);
            }
            }
        }

主要看if(value instanceof Double)之后那一段,其他和这个知识点无关。判断value是不是属于这个Class类的,如果是,返回是true,执行方法体中的cell实例对象的POJO方法)

  • 12
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值