如何创建类的ArrayList?

时间:2011-10-25 18:17:37

标签: java class arraylist

我有一些从Car延伸的课程(MotorcycleTrainclass Vehicle ...等)。 从另一个类我需要创建一个ArrayList个类,只能访问那些包含ArrayList的类。

这个概念与此类似,但显然它不起作用;

ArrayList<Class> vehicleType=new ArrayList<Class>();
vehicleType.add(Class.forName("train"));

我该如何解决? 感谢

5 个答案:

答案 0 :(得分:9)

大多数答案都遵循您使用Class.forName()的建议,尽管这不是必需的。您可以在类型名称上“呼叫”.class

看看这个JUnit测试:

@Test
public void testListOfClasses() {

    List<Class<?>> classList = new ArrayList<Class<?>>();

    classList.add(Integer.class);
    classList.add(String.class);
    classList.add(Double.class);

    assertTrue("List contains Integer class", classList.contains(Integer.class));
}

我希望您的需求列表类型为Class<? extends Vehicle>

答案 1 :(得分:3)

如果您要使用类加载器(Class.forName),则需要使用完全限定的类名,即Class.forName("com.package.Train");,就像从命令行引用它一样。< / p>

答案 2 :(得分:2)

尝试:

ArrayList<Class<? extends Vehicle>> vehicleType=new ArrayList<? extends Vehicle>();
vehicleType.add(Train.class);

这将确保添加到vehicleType的所有类都扩展Vehicle。并且,该类Train实际存在。

很少有必要以这种方式使用类。尝试找一种解决问题的简单方法。

答案 3 :(得分:1)

Class.forName(“火车”)也许吧?区分大小写?

答案 4 :(得分:0)

如果“train”是简单的类名,那么这将完成工作

  

vehicleType.add(的Class.forName(train.class.getName()));

无论如何,当你没有告诉我们什么是错误(或异常)消息时,我们无法进一步帮助。