n0p*_*0pe 1 java string class object instantiation
场景:
如何根据用户输入的字符串创建ListLayout对象?我需要等同于这样做:
CustomLayout layout = new ListLayout();
Run Code Online (Sandbox Code Playgroud)
理想情况下,我需要找到一个解决方案,它允许我检查输入的String是否对应于在实际创建对象之前实现CustomLayout的预定义类(因为如果它不存在则会抛出错误而我不检查预先).
这真让我思考......提前感谢您的帮助
如果你不想在这里使用反射,工厂地图可能是正确的:
interface LayoutFactory {
public CustomLayout makeLayout();
}
Map<String, LayoutFactory> factories = new HashMap<String, LayoutFactory>();
factories.put("GridLayout", new LayoutFactory() {
public CustomLayout makeLayout() { return new GridLayout(); }
});
factories.put("ListLayout", new LayoutFactory() {
public CustomLayout makeLayout() { return new ListLayout(); }
});
String layoutName = ...; // user input
CustomLayout l = factories.get(layoutName).makeLayout();
Run Code Online (Sandbox Code Playgroud)
当然,您还应该处理用户确实提供未知布局名称的情况(factories.get然后返回null
).
归档时间: |
|
查看次数: |
162 次 |
最近记录: |