相关疑难解决方法(0)

在Eclipse中自动生成toString方法的快捷方式是什么?

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)

java automation tostring

28
推荐指数
4
解决办法
3万
查看次数

如何将任何对象序列化为URI?

我的基本问题是:有没有自动完成的任何内置(不必是流行的库/包的一部分)?我正在使用的主要内容是Spring(MVC)和Jackson2.

我知道有一些手动方法可以做到这一点:

  1. 在每个类中创建一个方法,将其特定属性序列化为property=value&一种形式(一种臭味,因为它是一堆逻辑重复,我觉得).
  2. 创建一个接受对象的函数,并使用反射动态读取所有属性(我猜是getters),并通过获取每个属性来构建字符串.我假设这是杰克逊一般用于序列化/反序列化的方式,但我真的不知道.
  3. 使用Jackson的某些功能来自定义序列化对象.我已经研究过自定义序列化程序,但它似乎是特定于一个类(所以我必须为每个我正在尝试序列化的类创建一个),而我希望有一个通用的方法.我只是无法理解如何将一个普遍应用于对象.一些链接:
  4. 使用ObjectMapper.convertValue(object, HashMap.class);,迭代HashMap的键/值对,并构建字符串(这是我现在使用的,但我觉得转换过多?).
  5. 我猜我还有其他的想法.

我研究的主要帖子是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)

java reflection spring spring-mvc jackson

11
推荐指数
1
解决办法
6289
查看次数

标签 统计

java ×2

automation ×1

jackson ×1

reflection ×1

spring ×1

spring-mvc ×1

tostring ×1