toString某些简单类的自动生成方法是好还是坏?
我正在考虑生成类似下面的内容,它采用变量名称并生成一个toString方法,打印名称后跟其值.
private String name;
private int age;
private double height;
public String toString(){
return String.format("Name: %s Age: %d Height %f", name, age, height);
}
Run Code Online (Sandbox Code Playgroud) 我的基本问题是:有没有自动完成的任何内置(不必是流行的库/包的一部分)?我正在使用的主要内容是Spring(MVC)和Jackson2.
我知道有一些手动方法可以做到这一点:
property=value&一种形式(一种臭味,因为它是一堆逻辑重复,我觉得).ObjectMapper.convertValue(object, HashMap.class);,迭代HashMap的键/值对,并构建字符串(这是我现在使用的,但我觉得转换过多?).我研究的主要帖子是Java:获取类的属性以构造字符串表示
我的观点是,我有几个类,我希望能够序列化,而无需为每个类指定具体的内容.这就是为什么我认为使用反射的函数(上面的#2)是解决这个问题的唯一方法(如果我必须手动完成).
如果它有帮助,我的意思的一个例子就是说,这两个类:
public class C1 {
private String C1prop1;
private String C1prop2;
private String C1prop3;
// Getters and setters for the 3 properties
}
public class C2 {
private String C2prop1;
private String C2prop2;
private String C2prop3;
// Getters and setters for the 3 properties
}
Run Code Online (Sandbox Code Playgroud)
(不,属性名称和约定不是我的实际应用程序使用的,它只是一个例子)
序列化的结果是C1prop1=value&C1prop2=value&C1prop3=value和C2prop1=value&C2prop2=value&C2prop3=value,但只有一个定义序列化是如何发生的(已定义的某个地方,或者由我手动创建)的地方.
所以我的想法是,我将不得不最终使用以下形式(取自我上面链接的帖子):
public String toString() {
StringBuilder sb = …Run Code Online (Sandbox Code Playgroud)