一个小问题

04-02-06 liuhs
EventDefinition[] eventDefs;
请问eventDefs=null 与 eventDefs = new EventDefinition[0] 有何区别?

jrog
2004-02-06 15:12
0. java language中,对于任意type的数组定义都会自动生成和这个数组对应的一个class。比如有一个定义int[],那么就意味着你定义了一个这样的类:

class intArray {
   private List elements = null;
   public intArray(int length) {
       elements = new ArrayList(length);
   }
   ......
}
<p class="indent">

同样,当你定义一个user-defined class type的数组的时候,java compiler也会自动为你生成相对应的一个class,不如说EventDefinition[],其对应的class为EventDefinitionArray;

1. EventDefinition[] eventDefs;
这个declaration定义了一个object,其type为EventDefinitionArray;

2. eventDefs = null;
这个declaration和其他的object赋值没有两样,表示eventDefs被赋值为null;

3. eventDefs = new EventDefinition[0];
你可以这样认为:eventDefs = new EventDefinitionArray( 0);

liuhs
2004-02-06 15:43
谢谢jrog!