我在阅读Junit4.4的源代码时
        /**
 * Constructs a TestSuite from the given array of classes.  
 * @param classes {@link TestCase}s
 */
public TestSuite (Class<?>... classes) {
for (Class<?> each : classes)
addTest(new TestSuite(each.asSubclass(TestCase.class)));
}
Class<?>... classes这样表示是什么意思?依照说明来看时是类的数组,那为何不这样表示:Class<?>[] classes

解决方案 »

  1.   

    我想楼主理解错了。应该是 Class<?> ... classes 
     Class<?>代表类型,中间的"..."表示无限参数,classes表示该无限参数的名字
    调用可以这样写  TestSuite (String.clsss,Integer.class),但是如果写成数组就不能这样写。必须这样写
    TestSuite (new Class<?>[]{String.class,Integer.class});
      

  2.   

    有区别吗?
    String[] 和 String... 是一样的
      

  3.   

    ...的意思表示0——n个。数组应该存储的是基本数据类型,这里是<>,应该是泛型。
    (个人理解,有不对的地方请大家指教)
      

  4.   

    Java的...好像也是从1.5开始引入的。这个早在C语言里就有,表示不定参数个数(类型也可不同)。
    现在在Java中就表示相同类型不定个数的参数。2楼说String...与String[]作为行参时一样,这个地方其实有些差异。
    比如:void hello(String... args){ } 可以这么调用:hello();
    而void hello(String[] args)就不行了。只能hello(null);而Class类是个泛型,这里使用通配符?作为泛型实参表示classes这些对象可以接受任何类型(类类型)。
      

  5.   

    <..>中间的可以理解为类型参数
    集合中中用的比较多
    好处在于不用进行类型转化
    避免可能发生的转化异常
      

  6.   

    我也是最近从thinking in java中看到这个,应该和数组的性质一样。
      

  7.   

    *<?>是泛型,一种特殊数据类型,如 List<String> list,这就声明了一个String的数据集合。