您的位置:首页 > 编程语言 > Java开发

java中instanceof的用法和实战

2017-12-21 11:08 531 查看
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方法)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java object null class string