Eclipse,Java:从静态字符串生成类字段,反之亦然

时间:2017-10-31 10:23:47

标签: java eclipse pojo

我正在使用mongo开发JAVA Web服务,为了实现mongo java驱动程序POJO api(如Morphia),我建立了我的POJO,如下所示:

    public class User {
        public static final String USER_NAME = "userName";
        private String userName;
        public User() {
        }
        // getter && setter //
    }

USER_NAME = "userName"是将来用作提交名称的参考。我想要实现的是我可以使用简单的if来检查接收的数据是否等于字段名称。例如:

    User user = new User();
    String receivedData = httpRequest.getParameter(User.USER_NAME);
    if (receivedData == null) {
        return null;
    } else {
        user.setUserName(receivedData);
        userCollection.insertOne(user);  
            // userCollection is MongoCollection<User>
        return Gson().toJson(user);
    }

我正在寻找一个可以自动生成其中一个声明(USER_NAME = "userName"private String userName)的eclipse函数或插件,并确保代码的一致性。

当然,如果对更好的做法有任何建议,那将是值得赞赏的。

修改

Stephan的反射方法为代码提供了极大的灵活性。但是,与我原来的简化示例相比,实际情况可能更复杂。例如,一个httpRequest具有许多不同的参数,这些参数存储在不同的(n)POJO中,并且每个POJO具有许多不同的(n)字段。在这种情况下,我们将执行n * n循环以获取字段值。

1 个答案:

答案 0 :(得分:1)

如果要对POJO的所有字段执行相同操作,请考虑迭代User.class.getFields()的结果。对于每个Field获取名称(f.getName()),使用名称检索值并将其设置为字段(f.set(object,value))。使用这种方法,不需要像USER_NAME那样的常量。

编辑1 :如果性能是一个问题,您当然可以一劳永逸地将所有这些字段收集到一些集合中,但是瓶颈仍然是必须尝试{{1每个可能的字段。反思方法没有什么特别的。

编辑2 :在“更好”的语言中,可以使用类型检查语法来检索httpRequest.getParameter()实例,例如,imag(而不是Java):

Field

这个答案基本上表明生成冗余常量并不是绝对必要的,因为一直将名称与字段连接的东西已经存在,它是Field f = User::userName;