null是什么? 0和null? null是什么意思?

时间:2014-01-01 11:19:26

标签: java android arraylist baseadapter

我看到以下代码,但我不知道它是什么意思。

    public class FileListAdapter extends BaseAdapter {

        private Context mContext;
        private LayoutInflater mInflater ;
        private ArrayList<FileNode> mFileList ;
        private Map<Integer, Boolean> mSelectMap = new HashMap<Integer, Boolean>();
                    .
                    .
                    .
        @Override
        public int getCount() {

            return mFileList == null ? 0 : mFileList.size() ;
        }

        @Override
        public Object getItem(int position) {

            return mFileList == null ? null : mFileList.get(position) ;
        }
}

第一个问题

mFileList == null ? 0 : mFileList.size();mFileList == null ? null : mFileList.get(position);是什么意思??

第二个问题

如果我想将上面的代码从类型对象修改为int,该怎么办?

    @Override
    public Object getItem(int position) {

        return mFileList == null ? null : mFileList.get(position) ;
    }

@Override
    public Integer getItem(int position) {

        return ???
            //what should I return for?
    }

有人可以帮助我回答这两个问题吗?

非常感谢。

3 个答案:

答案 0 :(得分:2)

  

mFileList == null? 0:mFileList.size();和mFileList == null?空值   :mFileList.get(position);是Turnary运营商。这是link

如果你想以另一种方式这样做:

@Override
public Integer getItem(int position) {
    if(mFileList == null)
       return 0;
    else
       return mFileList.size();

}

答案 1 :(得分:2)

第一个问题:它是ternary operator,基本上是内联if-else。 foo ? bar : baz首先评估foo,如果该表达式的结果为true,则使用bar,否则使用baz

第二个问题,不要修改getItem方法签名。它应该是这样的。 Java中的所有类都扩展Object,因此您也可以返回Integer。这种方法现在看起来很好,不需要修改它。

答案 2 :(得分:1)

return mFileList == null ? null : mFileList.get(position)

相当于:

if(mFileList == null)  
    return  null;
else
   return mFileList.get(position);