我通过以下方法,但没有得到我的老年人的设计。
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
从上面的方法中他们调用了下面的addField方法但是AddField方法中的getPrintableText是什么
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);
}
上面不是完整的代码,主要功能是我们正在尝试将内容写入pdf但我不想粘贴我的完整代码我只需要解释上面的逻辑
答案 0 :(得分:1)
addField(/**/, new PDFField(/**/) { @Override public String getPrintableText(Object o) { // ... } });
这里发生的是创建一个匿名内部类。
这个匿名内部类扩展了类PDFField
,并重新定义了类getPrintableText
中定义的方法PDFField
的行为。
抱歉还有一个疑问addFiled我们上面有两个方法,一个是匿名的,另一个是私有方法,我可以知道如果他们使用的是匿名类,那么他们可以为addField声明不同的方法名,这是私有的吗? - adithyan .p
我不确定我是否理解这条评论......
匿名类是
new PDFField(/**/) {
@Override
public String getPrintableText(Object o) {
// ...
}
}
这会作为参数传递给方法addField()
。
将匿名类实例作为参数获取的方法的可见性没有限制。