我目前正在浏览其中一个Android Tutorials。我发现了一个表达式:
Bundle bundle = getIntent().getExtras();
Long longVariable = bundle.getLong(someId);
if( longVariable != null )
{
//doSomething
}
在API中查看Bundle.getLong后,我看到它返回 long (原始)。 现在,我没有写Java很长一段时间,同时只有C#,但是对象 Long longVariable 变量怎么可能为空呢?
答案 0 :(得分:6)
如果getLong()
确实有返回类型long
则不能,即l
永远不会为空。可能程序员没有查找返回类型,但从方法名称推断出将返回Long
。
答案 1 :(得分:2)
如果你传入错误的身份怎么办?然后找不到它,但是你得到null,还是引发异常? 文件说明:
public long getLong (String key)
Returns the value associated with the given key,
or 0L if no mapping of the desired type exists for the given key.
Parameters
key a String
Returns
a long value
所以它永远不会返回null,但最终会返回0L。但是,getLongArray有时会返回null,所以它可能是使用getLongArray的剩余部分吗?
答案 2 :(得分:1)
在Java Long
中是一个对象,就像任何对象一样,它可以为null。
long
是基本类型,不能为空。
从Java 1.5开始,Java支持自动装箱和取消装箱,意味着它可以自动在基元和对象之间进行转换。
如果一个方法返回long
,那么即使你将它null
转换为Long
也可以安全检查Long
但是如果一个方法返回{{1}}对象它是好的检查空值的想法。
答案 3 :(得分:0)
尝试创建新实例。
bundle.getLong(someId)
返回原始long
类型而不是Long
。
Long l = new Long(bundle.getLong(someId));
然后检查if(l != null)
确保您从long
中提取了正确的Bundle
。尝试Log
点击此Long
对象,看看它是否正常。
Log.i("MY LONG: ", String.valueOf(l));