i am go through the below method but not getting how my seniors designed.
public LinkedHashMap<String,IPDFField> getFields() {
LinkedHashMap<String, IPDFField> fields = new LinkedHashMap<String, IPDFField>();
//^field1c^lastName^nameSuffix
// Line One
addField(fields,"1_1", new PDFField(27+X_OFF, 718+Y_OFF, new FieldWidthValidation(134F, "^field1_1^firstName^middleName^lastName^nameSuffix")) { //PI tab
@Override
public String getPrintableText(Object o) {
Disposition d = (Disposition) o;
return dataFormattingService.NormalizedPersonName(
d.getFirstName(), d.getMiddleName(), d.getLastName(), d.getNameSuffix()
);
}
});
} //getFileds method ends
from above method they have called below addField Method but what is getPrintableText inside AddField Method
private void addField(HashMap<String, IPDFField> fields, String fieldKey, IPDFField field) {
field.setFieldKey(fieldKey);
if (field.getValidation() != null) {
field.getValidation().setField(field);
}
fields.put(fieldKey, field);
}
above is not full code , the main functionality is we are trying to write content into pdf but i don't want to paste my full code i just need explanation for above logic
addField(/**/, new PDFField(/**/) { @Override public String getPrintableText(Object o) { // ... } });
What happens here is the creation of an anonymous inner class .
This anonymous inner class extends the class PDFField
and redefines the behavior of the method getPrintableText
which is defined in class PDFField
.
sorry one more doubt addFiled we have two methods in above , one is anonymous and another is private method,may i know if they are using annonymous class then they could have declared different method name for addField which is private above? – adithyan .p
I'm not sure if I understand that comment...
The anonymous class is
new PDFField(/**/) {
@Override
public String getPrintableText(Object o) {
// ...
}
}
And this is passed as a parameter to the method addField()
.
There is no restriction on the visibility of the method that gets the anonymous class instance as a parameter.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.