以下方法如何在Java中工作?

时间:2017-05-13 15:55:31

标签: java

我通过以下方法,但没有得到我的老年人的设计。

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但我不想粘贴我的完整代码我只需要解释上面的逻辑

1 个答案:

答案 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()

将匿名类实例作为参数获取的方法的可见性没有限制。