这里进行了什么样的数组初始化(Basic Java)?

时间:2013-08-05 05:33:25

标签: java android

这是Android Developer's Website

IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
try {
    ndef.addDataType("*/*");    /* Handles all MIME based dispatches.
                                   You should specify only the ones that you need. */
}
catch (MalformedMimeTypeException e) {
    throw new RuntimeException("fail", e);
}
intentFiltersArray = new IntentFilter[] {ndef, };  

所以,intentFiltersArray[0] = ndef。那么intentFiltersArray[1]还是以后呢?上述代码中,之后ndef的含义是什么?

同样,它还有另一个代码示例

techListsArray = new String[][] { new String[] { NfcF.class.getName() } };  

techListsArray[][]如何在此处初始化?我猜techListsArray[0][0]=NfcF.class.getName()(应该是NfcF不应该吗?)但其他元素呢?或者它只有一个元素?

2 个答案:

答案 0 :(得分:5)

  

所以,intentFiltersArray[0] = ndef。那么intentFiltersArray[1]及以后呢?

[1]或“超出”没有元素。

您正在创建一个包含一个元素的数组。如果您尝试访问intentFiltersArray[1],则会收到未经检查的例外:ArrayIndexOutOfBoundsException

  

在上面的代码中,ndef后面有逗号是什么意思?

没有任何意义。 Java语言语法允许在数组初始化列表的末尾使用冗余逗号。 (表面上看,它是为了简化源代码生成......)


现在是你的第二个例子:

  

如何在这里初始化techListsArray [] []?

它被初始化为1x1字符串数组数组:

  • techListsArray[0]String[],只有一个元素。
  • techListsArray[0][0]是一个字符串... NfcF类的完全限定名称;例如"some.pkg.NfcF"

答案 1 :(得分:1)

intentFiltersArray = new IntentFilter[] {ndef, };

相同
intentFiltersArray = new IntentFilter[] {ndef};

现在你的问题是如何初始化

   IntentFilter[] intentFiltersArray = new IntentFilter[] {ndef };  

这将在onw go中创建一个IntentFilter数组。它将在单行中定义和声明数组,数组大小为1,因为只有1个元素ndef