实现接口的类列表
有没有办法实现类似的东西
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; } }
如果它没有回答你的问题,我希望将其视为教育材料。 🙂