任何对象的java toString

AAa*_*Aaa 12 java reflection

我有很多数据对象,我希望能够生成一个String代表每个对象的代码,而不需要为每个对象实现一个toString方法.

我正在考虑获取字段及其值的反射.

还有其他想法吗?

谢谢.

Ale*_*exR 21

欢迎您使用雅加达的ToStringBuilder.它有2种模式,一种需要使用API​​添加所需的所有字段,另一种是基于反射:

@Override
public String toString() {
    return ToStringBuilder.reflectionToString(this);
}
Run Code Online (Sandbox Code Playgroud)

  • 你知道如何使用ToStringStyle吗?我不需要类名,例如.. (2认同)

Var*_*har 5

使用JUtils插件在包级别生成toString方法

或者使用反射你可以尝试这样的事情:

public static void toString(Object object) throws InvocationTargetException, IllegalArgumentException, IllegalAccessException{
        Class c = object.getClass();
        Method[] methods = c.getMethods();
        for (Method method : methods) {
            if(method.getName().startsWith("get")){
                System.out.println(method.getName()+" -> " +method.invoke(object, null));
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

JUtil插件是最好的,因为如果您需要提供有关该对象的更多信息,这将允许您稍后更改对象的toString.