「空对象java」空对象图层的作用
今天给各位分享空对象java的知识,其中也会对空对象图层的作用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java 中空对象是什么概念
- 2、java中一个void修饰的方法无返回值,那么有是不是返回一个空对象,有空对象这种说法吗
- 3、java程序中使用空对象会出现什么错误
- 4、java 怎样判断一个对象是否为空?
- 5、Java中怎么判断对象为空?
- 6、java对象为空的判断
java 中空对象是什么概念
所谓空对象就是指向NULL的,即未分配堆内存的,也就是没有new的。
例如
class A{。。。}
A a;
a==null?true:false//为true。
A a=new A();
a==null?true:false//为false。
java中一个void修饰的方法无返回值,那么有是不是返回一个空对象,有空对象这种说法吗
空对象是指null。void表示没有返回,包括没有返回空对象。
你可以测试下void方法内部,return null;是会报编译错误的。只能return;
java程序中使用空对象会出现什么错误
java程序中使用空对象
如果是对空对象赋值 不会报错
而对其取值 就会 抛出一个异常 NullPoniterException 空指针异常
你可以用 try ....catch 语句捕获这个异常 就不会报错了
java 怎样判断一个对象是否为空?
Item item = new Item();这个对象肯定是为空的
错了,这个对象已经分配了内存,不是空的,用System.out.println(item)打印就知道已经存在地址,如果是空,打印null;
判断一个对象是否为空,就是按那个条件判断,没有错,System.out.println();是控制台比较实用的调试,测试方法
Java中怎么判断对象为空?
首先来看一下工具StringUtils的判断方法:
一种是org.apache.commons.lang3包下的;
另一种是org.springframework.util包下的。这两种StringUtils工具类判断对象是否为空是有差距的:
StringUtils.isEmpty(CharSequence cs); //org.apache.commons.lang3包下的StringUtils类,判断是否为空的方法参数是字符序列类,也就是String类型StringUtils.isEmpty(Object str); //而org.springframework.util包下的参数是Object类,也就是不仅仅能判断String类型,还能判断其他类型,比如Long等类型。12345
从上面的例子可以看出第二种的StringUtils类更实用。
下面来看一下org.apache.commons.lang3的StringUtils.isEmpty(CharSequence cs)源码:public static boolean isEmpty(final CharSequence cs) { return cs == null || cs.length() == 0;
接下来是org.springframework.util的StringUtils.isEmpty(Object str)源码:public static boolean isEmpty(Object str) { return (str == null || "".equals(str));
基本上判断对象是否为空,StringUtils.isEmpty(Object str)这个方法都能搞定。
接下来就是判断数组是否为空
list.isEmpty(); //返回boolean类型。
java对象为空的判断
/**
* 判断对象或对象数组中每一个对象是否为空: 对象为null,字符序列长度为0,集合类、Map为empty
*
* @param obj
* @return
*/
public static boolean isNullOrEmpty(Object obj) {
if (obj == null)
return true;
if (obj instanceof CharSequence)
return ((CharSequence) obj).length() == 0;
if (obj instanceof Collection)
return ((Collection) obj).isEmpty();
if (obj instanceof Map)
return ((Map) obj).isEmpty();
if (obj instanceof Object[]) {
Object[] object = (Object[]) obj;
if (object.length == 0) {
return true;
}
boolean empty = true;
for (int i = 0; i object.length; i++) {
if (!isNullOrEmpty(object[i])) {
empty = false;
break;
}
}
return empty;
}
return false;
}
应用场景:
读取excel文件,转化为一个二维数组:Object[][] arrays
但是excel中有空行,所以需要过滤Object[][] arrays中的空的一维数组:
Java代码
/***
* 过滤数组中的空元素
*
*
* @param arrays
* @return
*/
public static Object[][] filterEmpty(Object[][] arrays) {
int sumNotNull = 0;
/***
* 统计非空元素的总个数
*/
for (int i = 0; i arrays.length; i++) {
Object object = arrays[i];
if (!ValueWidget.isNullOrEmpty(object)
!SystemUtil.isNullOrEmpty((Object[]) object)) {// 判断元素是否为空
sumNotNull = sumNotNull + 1;
}
}
Object[][] filtedObjs = new Object[sumNotNull][];
int index = 0;
for (int i = 0; i arrays.length; i++) {
Object[] object_tmp = arrays[i];
if (!ValueWidget.isNullOrEmpty(object_tmp)
!SystemUtil.isNullOrEmpty((Object[]) object_tmp)) {// 判断元素是否为空
filtedObjs[index++] = object_tmp;
}
}
return filtedObjs;
}
判断对象的所有成员变量是否为空
Java代码
/***
* Determine whether the object's fields are empty
*
* @param obj
* @param isExcludeZero :true:数值类型的值为0,则当做为空;----false:数值类型的值为0,则不为空
*
* @return
* @throws SecurityException
* @throws IllegalArgumentException
* @throws NoSuchFieldException
* @throws IllegalAccessException
*/
public static boolean isNullObject(Object obj, boolean isExcludeZero)
throws SecurityException, IllegalArgumentException,
NoSuchFieldException, IllegalAccessException {
if(ValueWidget.isNullOrEmpty(obj)){//对象本身就为null
return true;
}
ListField fieldList = ReflectHWUtils.getAllFieldList(obj.getClass());
boolean isNull = true;
for (int i = 0; i fieldList.size(); i++) {
Field f = fieldList.get(i);
Object propertyValue = null;
try {
propertyValue = getObjectValue(obj, f);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
if (!ValueWidget.isNullOrEmpty(propertyValue)) {// 字段不为空
if (propertyValue instanceof Integer) {// 是数字
if (!((Integer) propertyValue == 0 isExcludeZero)) {
isNull = false;
break;
}
} else if (propertyValue instanceof Double) {// 是数字
if (!((Double) propertyValue == 0 isExcludeZero)) {
isNull = false;
break;
}
}else if (propertyValue instanceof Float) {// 是数字
if (!((Float) propertyValue == 0 isExcludeZero)) {
isNull = false;
break;
}
}else if (propertyValue instanceof Short) {// 是数字
if (!((Short) propertyValue == 0 isExcludeZero)) {
isNull = false;
break;
}
}else {
isNull = false;
break;
}
}
}
return isNull;
}
测试:
Java代码
@Test
public void test_isNullObject() throws SecurityException,
IllegalArgumentException, NoSuchFieldException,
IllegalAccessException {
Person2 p = new Person2();
Assert.assertEquals(true, ReflectHWUtils.isNullObject(p, true));
Assert.assertEquals(false, ReflectHWUtils.isNullObject(p, false));
p.setAddress("beijing");
Assert.assertEquals(false, ReflectHWUtils.isNullObject(p, true));
Assert.assertEquals(false, ReflectHWUtils.isNullObject(p, false));
p.setAddress(null);
p.setId(0);
Assert.assertEquals(true, ReflectHWUtils.isNullObject(p, true));
Assert.assertEquals(false, ReflectHWUtils.isNullObject(p, false));
}
Person2 源代码(省略getter,setter方法):
Java代码
import java.sql.Timestamp;
public class Person2 {
private int id;
private int age;
private double weight;
private String personName;
private Timestamp birthdate;
public String identitify;
protected String address;
String phone;
}
空对象java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于空对象图层的作用、空对象java的信息别忘了在本站进行查找喔。