在Java中将long分配给Long

时间:2011-08-14 11:13:25

标签: java android object type-conversion primitive

我目前正在浏览其中一个Android Tutorials。我发现了一个表达式:

Bundle bundle = getIntent().getExtras();
Long longVariable = bundle.getLong(someId);
if( longVariable != null )
{
  //doSomething
}

在API中查看Bundle.getLong后,我看到它返回 long (原始)。 现在,我没有写Java很长一段时间,同时只有C#,但是对象 Long longVariable 变量怎么可能为空呢?

4 个答案:

答案 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类型而不是LongLong l = new Long(bundle.getLong(someId));

然后检查if(l != null)

确保您从long中提取了正确的Bundle。尝试Log点击此Long对象,看看它是否正常。

Log.i("MY LONG: ", String.valueOf(l));