@ToString
class SuperClass {
private @Getter @Setter int id;
private @Getter @Setter String date;
}
@ToString(callSuper = true)
class MyClass extends SuperClass {
private @Getter @Setter String field;
}
Calling toString
from MyClass results in this output:
MyClass(super=SuperClass(id=1, date=00/00/0000), field=test)
Is possible to get something like this...
MyClass(id=1, date=00/00/0000, field=test)
... directly, without manipulate the output string?
cheers!
Not really; we'd have to do resolution to pull that off, and we don't want to go there for the lombok basics, because resolution is very tricky (performance issues and far more bugs).
Now, it is sort of possible using something like
@ToString(callSuper = false)
class MyClass extends SuperClass {
@ToString.Include(name="id")
private int dummyId() {
return id;
}
@ToString.Include(name="date")
private int dummyDate() {
return date;
}
private @Getter @Setter String field;
}
This is obviously only doable for a small number of fields (untested).
A better idea might be
@ToString(callSuper = false)
class MyClass extends SuperClass {
@ToString.Include(name=" ")
private int dummySuper() {
return super.toString().replace(".*?\\(((?s:.*))\\)$", "$1");
}
private @Getter @Setter String field;
}
" "
as the name may or mayn't work.super.toString()
is (or looks like) lombok-generated.MyClass( id=1, date=00/00/0000, field=test)
with one blank too much.See related wiki entry: https://github.com/rzwitserloot/lombok/wiki/FEATURE-IDEA:-@SuperToString
Most helpful comment
Now, it is sort of possible using something like
This is obviously only doable for a small number of fields (untested).
A better idea might be
" "
as the name may or mayn't work.super.toString()
is (or looks like) lombok-generated.MyClass( id=1, date=00/00/0000, field=test)
with one blank too much.