如何从Java中的String获取类引用?

mom*_*omo 1 java android

如果我需要返回一个基于String的类实例(例如,从JSON创建逻辑),应该如何编写?

我最初的想法是一个开关,但在Android框架的Java版本中,看起来switch语句不允许使用Strings.

接下来的想法是一个HashMap:

private HashMap<String, Class> classMap = new HashMap<String, Class>();
classMap.put("someClass", SomeClass.class)?
// ... etc
String someString = jsonObject.getString("someProperty");
Class classRef = classMap.get(someString);
SomeSuperClass classInstance = new classRef();
Run Code Online (Sandbox Code Playgroud)

这不起作用.我宁愿没有if/else列出一长串的可能性.

Tho*_*nan 6

只需使用Class<?> clazz = Class.forName("com.yourpackage.YourClass")Then实例化它:clazz.newInstance();

  • @Bhavik第一行Class.forName("...")返回一个类引用.第二行实例化它并创建一个对象. (3认同)