实现接口的类列表

有没有办法实现类似的东西

List<Class> ClassList = new ArrayList<Class>(); 

我的目标是从该列表创建一个hashmap,其中键是类的toString方法(在MyInterface中定义),值是类本身。 此类的每个对象的toString方法返回相同的结果。 这样我就可以通过搜索正确的字符串来使用地图创建类的实例。

谢谢你试图帮助,问候

 List> ClassList = new ArrayList>(); 

应该

 List> ClassList = new ArrayList>(); 

generics世界中没有implements关键字 。 如果需要实现接口的类型参数,请使用extends关键字来表示它。

既然您对我解释的方式感兴趣,这里有一个快速实现,以validation它可以完成…

 import java.util.ArrayList; import java.util.List; enum NumberClass { ONE("One"), TWO("Two"), THREE("Three"); private final String className; NumberClass(String name) { className = name; } String getName() { return className; } } public class Test { public static void main(String[] args) { List numbers = new ArrayList(); numbers.add(NumberClass.ONE); numbers.add(NumberClass.THREE); numbers.add(NumberClass.TWO); numbers.add(NumberClass.ONE); numbers.add(NumberClass.THREE); numbers.add(NumberClass.ONE); numbers.add(NumberClass.TWO); SomeNumber[] nbs = new SomeNumber[numbers.size()]; int i = 0; for (NumberClass nbC : numbers) { SomeNumber nb; try { nb = (SomeNumber) Class.forName(nbC.getName()).newInstance (); nbs[i++] = nb; } // Cleanly handle them! catch (InstantiationException e) { System.out.println(e); } catch (IllegalAccessException e) { System.out.println(e); } catch (ClassNotFoundException e) { System.out.println(e); } } for (SomeNumber sn : nbs) { System.out.println(sn.getClass().getName() + " " + sn.getValue()); } } } // The following must be in their own files, of course public interface SomeNumber { int getValue(); } public class One implements SomeNumber { public int getValue() { return 1; } } public class Two implements SomeNumber { public int getValue() { return 2; } } public class Three implements SomeNumber { public int getValue() { return 3; } } 

如果它没有回答你的问题,我希望将其视为教育材料。 🙂