java中instanceof的用法和实战

简介: java 中的instanceof 是一个二元操作符(运算符)运算符,由于是字母组成,所以是Java的保留关键字,但是和>=,

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方法)

相关文章
|
15天前
|
Java
Java中的抽象类:深入了解抽象类的概念和用法
Java中的抽象类是一种不能实例化的特殊类,常作为其他类的父类模板,定义子类行为和属性。抽象类包含抽象方法(无实现)和非抽象方法。定义抽象类用`abstract`关键字,子类继承并实现抽象方法。抽象类适用于定义通用模板、复用代码和强制子类实现特定方法。优点是提供抽象模板和代码复用,缺点是限制继承灵活性和增加类复杂性。与接口相比,抽象类可包含成员变量和单继承。使用时注意设计合理的抽象类结构,谨慎使用抽象方法,并遵循命名规范。抽象类是提高代码质量的重要工具。
29 1
|
1月前
|
前端开发 Java
java中的Queue队列的用法
java中的Queue队列的用法
19 1
|
1月前
|
XML Java 编译器
java aspectjrt AOP 用法
java aspectjrt AOP 用法
21 0
|
18天前
|
设计模式 安全 Java
Java并发编程实战:使用synchronized关键字实现线程安全
【4月更文挑战第6天】Java中的`synchronized`关键字用于处理多线程并发,确保共享资源的线程安全。它可以修饰方法或代码块,实现互斥访问。当用于方法时,锁定对象实例或类对象;用于代码块时,锁定指定对象。过度使用可能导致性能问题,应注意避免锁持有时间过长、死锁,并考虑使用`java.util.concurrent`包中的高级工具。正确理解和使用`synchronized`是编写线程安全程序的关键。
|
1天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
9 0
|
5天前
|
JSON Java 数据格式
Java QueryWrapper基本用法
Java QueryWrapper基本用法
13 2
|
5天前
|
存储 Java 数据库连接
java DDD 领域驱动设计思想的概念与实战
【4月更文挑战第19天】在Java开发中,领域驱动设计(Domain-Driven Design, DDD) 是一种软件设计方法论,强调以领域模型为中心的软件开发。这种方法通过丰富的领域模型来捕捉业务领域的复杂性,并通过软件满足核心业务需求。领域驱动设计不仅是一种技术策略,而且还是一种与业务专家紧密合作的思维方式
22 2
|
12天前
|
Java
Java 16 新玩法:instanceof 升级版,让类型检查更精准
Java 16 新玩法:instanceof 升级版,让类型检查更精准
13 0
|
15天前
|
Java API 开发者
Java 8新特性之函数式编程实战
【4月更文挑战第9天】本文将深入探讨Java 8的新特性之一——函数式编程,通过实例演示如何运用Lambda表达式、Stream API等技术,提高代码的简洁性和执行效率。