在外部类java中使用内部类对象
我正面临将json对象转换为POJO类的问题。
我有一个名为Service的公共类,它有一个内部类User。 我想使用内部类作为容器/对象来保存所有外部类方法的变量。 我正在尝试执行以下操作,但我收到编译错误。 请说明我如何做到这一点,请在下面的代码中纠正我正在做的错误。
从eclipse调试窗口,我看到下面的json是在节点变量节点中获得的:{“firstName”:“ndndbs”,“lastName”:“dnjdnjs”}
试验1:
public class Service { // Method public boolean createUserAccount(JsonNode node) throws Exception { ObjectMapper mapper = new ObjectMapper(); User user=null; try { Service service=new Service(); user = mapper.readValue(node, User.class); } catch (Exception e) {throw new Exception("failed to bind json", e);} System.out.println("Use this anywhere in method"+userNode.firstName); } } // Inner class public class User { public String firstName; public String lastName; } } OUTPUT: NULL POINTER EXCEPTION AND user=null even after execution of mapper.readValue() statement
从声明
user = mapper.readValue(node, User.class);
不确定NullPointerException的原因(完整的堆栈跟踪可能有帮助)。 似乎ObjectMapper试图通过Reflection创建内部类的实例。 但是创建内部类和嵌套类的实例并不简单。请参阅是否可以使用Java Reflection创建嵌套类的实例? 。
在你的情况下
Service.User.class.class.getConstructors()[0].newInstance(serviceInstance);
代替
User.class.newInstance()
通常/外类的情况。 我不确定ObjectMapper
是否能够以这种方式实例化类。
我建议将User
移动到其自己的源User.java中的顶级公共类,除非您有特定的设计限制,我很想知道。