Java 是否可以将构造函数添加到PDF生成器中,而不是手动键入字符串?

Java 是否可以将构造函数添加到PDF生成器中,而不是手动键入字符串?,java,pdf-generation,itext,Java,Pdf Generation,Itext,大家好,我现在正在试用Java的PDF生成器,想知道是否可以从不同的类中添加构造函数,而不是手动键入字符串。 例如,代替段落.add(“此处为您的字符串”); 是否可以键入段落。添加(account.welcome()); 我尝试这样做,但它返回了一个错误 我现在使用的PDF生成器代码是: package demo; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com

大家好,我现在正在试用Java的PDF生成器,想知道是否可以从不同的类中添加构造函数,而不是手动键入字符串。 例如,代替段落.add(“此处为您的字符串”); 是否可以键入段落。添加(account.welcome()); 我尝试这样做,但它返回了一个错误

我现在使用的PDF生成器代码是:

package demo;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.*;

public class PDFGenerateDemo {

    public static void main(String[] args) 
        throws Exception {

        Document document = new Document();
         PdfWriter.getInstance(document,
          new FileOutputStream("/Users/PandaFunk/Desktop/images/sample.pdf"));

      document.open();
      Paragraph paragraph = new Paragraph();

      paragraph.add("Hello World\n");
      paragraph.add("PDF sample generation demo\n");
      paragraph.add("programmed by Mon Zalameda\n");
      paragraph.add("DLS-CSB is a wonderful school. "
            + "I will miss you and hope "
            + "to see you again.\n\n");

      //adding Image
      Image csbImage = 
            Image.getInstance("/Users/PandaFunk/Desktop/images/DLS-CSB_Seal.png");

      document.add(paragraph);
      document.add(csbImage);
      document.close();
    }
}
更新:这是我尝试使用的类

package model;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

public class SECB extends BankBSP implements 
    PSERequirement{

    public String name = "Security Bank";

    public void welcome() {
        System.out.println("Maligayang pagdating sa " + name);  

    }

    public void depositAmountRequirement() {
        System.out.println("To open an account, "
                + "minimum deposit amount is P3,000.00");
    }

    public void depositPromo() {
        System.out.println("Minimum opening amount of at least "
            + "Php500,000.00 will get you a dinner date with "
            + "2014 Ms. World Megan Young.");
    }

    public void maintainingBalance() {
        System.out.println("Maintaining balance of "
            + "at least Php1,000.00 is required");
    }

    public void interestRate() {
        System.out.println("Minimum deposit amount of P3,000.00 "
            + "to earn an interest rate of 5% per annum.");
    }

    public void displayFinancialStatement() {
        System.out.println("PSE Requirement: " 
            + MIN_LARGE_CAPITALIZATION);
        System.out.println(name + " 2015 "
            + "Financial Assets: Php141,740,664,644.70");
    }

    public void displayTotalMarketShares() {
        System.out.println("PSE Required Shares: " 
            + MIN_SHARES_SOLD);
        System.out.println(name + "total shares: " + 
            "753,538,887");
    }


    public void GeneratePDF() throws DocumentException, MalformedURLException, IOException{

        Document document = new Document();
         PdfWriter.getInstance(document,new FileOutputStream("/Users/PandaFunk/Desktop/images/sample.pdf"));

     document.open();
     Paragraph paragraph = new Paragraph();
     paragraph.add(welcome.toString());
     paragraph.add("Hello World\n");
     paragraph.add("PDF sample generation demo\n");
     paragraph.add("programmed by Mon Zalameda\n");
     paragraph.add("DLS-CSB is a wonderful school. "
            + "I will miss you and hope "
            + "to see you again.\n\n");

     //adding Image
     Image csbImage = Image.getInstance("/Users/PandaFunk/Desktop/images/DLS-CSB_Seal.png");

     document.add(paragraph);
     document.add(csbImage);
     document.close();
    }
}

对。这是可能的。以下措施肯定会奏效:

paragraph.add(account.welcome());
如果
welcome
公共字符串welcome()

您必须将
字符串
传递给构造函数。不管是什么
字符串
。如果您有一个
对象
,该对象有一个返回
字符串的方法
,则可以传递该方法的结果,该方法如上所示(
toString
返回
字符串

如果您在同一个包中,该方法也必须是
public
package public

综上所述:
在Java中,不仅可以将引用副本作为参数传递给字母数字标记标识的对象,还可以传递给方法返回的对象。您只需要记住类型必须匹配,即必须在扩展树中传递相同类或下面类的对象

感谢您的快速回复Xentros!但是当使用段落.add(account.toString())时,它似乎不起作用@JjCalaguian您能告诉我错误是什么吗?或者您收到的字符串与预期的不同?@JjCalaguian请将account.welcome()添加到您的问题中。让我们看看代码。奇怪的是,我没有看到一个简单调用
toString()
方法的
add(Object)
方法。这会更简单;)@JjCalaguian,这应该可以工作,因为这将返回一个字符串。如果您有override
toString()
可能会出现异常,否则可能会出现意外结果。编辑:你的所有方法都打印到控制台中,你需要返回一个字符串来使用这样的方法这叫做实例,构造函数是一个“特殊”方法来创建类的实例