androd报错Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object refere

 

每个报错会有不同的情况:t我这里的情况:

出错的是这行代码,三目运算符来判断这个值是否等于0

          
            tvProductAccount_isGift.setText((editProductAccount.getAccountTypeIsGift() == 0 ? "否" : "是"));

分析了错误原因:在实体类:getAccountTypeIsGift()对象用的是Integer类型的值,在包装类里,没有int值0的存在

            /**
             * 是否赠送账户
             * 实体类用的是包装类Integer,传入的值为0,会转化为null
             * 当
             */
            tvProductAccount_isGift.setText((editProductAccount.getAccountTypeIsGift() == 0 ? "否" : "是"));

数据库设计如果允许为空的话,推荐使用Integer,(null对于程序来说还是比较好控制的)

如果不允许为空,使用包装的时候,如果你往数据库插入null值,此时就会抛出异常。然后你就可以对异常进行捕获并处理。

b),使用基本数据类型的时候,如果字段是NULL,那么JDBC会返回0,但是这里会有一个问题。有可能0在你的业务逻辑代表着特定含义,这时候就可能出现一些意想不到的后果。

int 是基本的数据类型,默认值为0;而Integer是其包装类,默认值为null,可区分赋值还是未赋值。

你可能感兴趣的:(Java基础,java数据类型,android,java)