在外部类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中的顶级公共类,除非您有特定的设计限制,我很想知道。