Java将字符串设置为要运行的类名

时间:2014-03-09 23:51:14

标签: java class reflection

我有一个问题,我有一个如下代码:

controller.start(c.class, 1);

但我想从控制台设置“c”。我可以在main方法上从args获取/设置它。但我怎么能把它放在c.class上?我的意思是我该怎么做?

字符串a =“c”;

controller.start(a.class,1);

当然它不起作用,但我希望我可以告诉你我的问题

在php上我们可以使用$$ string来设置/获取字符串变量,但我不知道我们怎么能在Java上做到这一点?

1 个答案:

答案 0 :(得分:1)

更常用(也更安全)的解决方法是使用地图:

private static final Map<String, Class<?>> NAME_TO_CLASS = new Map<>();
static {
  NAME_TO_CLASS.put("c", c.class);
  ...
}

static void main(String[] args) {
  ...
  controller.start(NAME_TO_CLASS.get(args[0]), 1);
}

当然,在现实生活中,您需要检查参数是否正确并且在地图中是否为NAME_TO_CLASS.contains(your_arg);